Poco fa, per curiosità, ho scritto un programma Java che occupa molta memoria molto velocemente. (Aggiunge BufferedImages a un arraylist in un ciclo.)
Ho tenuto il Monitor di sistema di Windows aperto per osservare l'utilizzo della RAM durante l'esecuzione.
Quando ho avviato il programma, l'utilizzo della RAM è cresciuto molto velocemente e quando ha raggiunto circa il 100% dei miei 6 GB di RAM, il mio computer è diventato estremamente lento. Dopo circa un minuto, sono riuscito a terminare il programma e il mio computer ha lentamente recuperato la velocità. Ciò che ha attirato la mia attenzione è stato che l'utilizzo della memoria è diminuito prima lentamente, poi all'improvviso è sceso a quasi 0 MB prima di risalire fino all'utilizzo inattivo a circa 2-2,5 GB.
Ho preso uno screenshot dell'utilizzo della RAM nel Monitor di sistema:
Mi chiedevo se qualcuno potesse spiegare cosa succede quando il computer esaurisce la memoria e perché non ritorna inattivo subito dopo la fine del programma ma dopo circa 60 secondi? Inoltre, perché l'utilizzo si riduce a zero invece del solo utilizzo inattivo?