Βασικά, το τί λέει ο Task Manager σε κάθε έκδοση του λειτουργικού δεν έχει μεγάλη σχέση με το ποιά είναι η "ελεύθερη μνήμη" και αλλάζει από λειτουργικό σε λειτουργικό. Άσε που το θέμα είναι τί εννοείς "Ελεύθερη μνήμη".
Όσα ο Task Manager αναφέρει ως Free Memory ή System Memory είναι αναγκαστικά μία απλοποιημένη εικόνα του τί γίνεται πραγματικά με τη μνήμη. Τα Windows κρατάνε τη μνήμη σε σελίδες, η οποία μπορεί (χονδρικά) να είναι λευκή(δεν έγινε ποτέ allocated ή έχει καθαριστεί), σε χρήση (έχει δεδομένα αλλά είναι ίδια με το paging file), βρώμικη (η σελίδα διαφέρει από την αντίστοιχη στο paging file), παρατημένη (η σελίδα έγινε deallocated αλλά δεν καθαρίστηκε ακόμα). Οι παρατημένες δεν καθαρίζονται αμέσως, αφενός επειδή αυτό αργεί, αφετέρου γιατί μπορεί η εφαρμογή να την ζητήσει ξανά (αν π.χ. ήταν ο buffer ενός αρχείου). Επίσης, οι σελίδες μπορεί να είναι shared (φορτωμένα DLL ή το .NET Runtime) από πολλές εφαρμογές, ή private για μία εφαρμογή μόνο. Στο virtual size μίας εφαρμογής θα μετρήσουν όλες, αλλά αυτό δεν σημαίνει ότι π.χ. κάθε εφαρμογή .NET καταλαμβάνει και 30 MB για το Runtime!
Και εδώ είναι το ενδιαφέρον:
Οι παρατημένες σελίδες είναι ελεύθερες? Αν ναι, παίρνεις ένα ποσό ελεύθερης μνήμης. Αν όχι, παίρνεις ένα άλλο ποσό ελεύθερης μνήμης. Κάθε έκδοση του λειτουργικού μετράει διαφορετικά την ελεύθερη μνήμη, προσπαθώντας να δώσει ένα νούμερο που να έχει σημασία και για τον απλό χρήστη, αλλά και για τον administrator.
Η παραπάνω περιγραφή είναι αναγκαστικά εξοργιστικά απλή. Για παρηγοριά, όλα τα σύγχρονα λειτουργικά έχουν το ίδιο περίπλοκη διαχείριση μνήμης. Για να καταλάβεις πάντως πραγματικά τί συμβαίνει με τη μνήμη θα πρέπει να διαβάσεις το Windows Internals του Mark Russinovich, όπου περιέχει ολόκληρο κεφάλαιο για Memory Management. Ευτυχώς, ο Russinovich έχει γράψει και κάποια σχετικά άρθρα στο Technet Magazine, ενώ έχει φτιάξει και ένα εργαλείο, το Process Explorer το οποίο είναι ΠΟΛΥ καλύτερο από τον Task Manager και δείχνει όλες τις λεπτομέρειες που θα ήθελες ποτέ για μνήμη, CPU, I/O κλπ.
Και είναι και ο τύπος που έκανε τσακωτή την Sony όταν έβαλε rootkits στα CD της για λόγους ... copy protection!
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos