Ik ben bezig met het schrijven van een applicatie die draait op Linux PDA's. Er is voor deze applicatie een sterke tradeoff tussen geheugengebruik en CPU gebruik, resources die beide schaars zijn op een PDA. Het programma zit zo in elkaar dat bestanden pas geladen worden op het moment dat ze nodig zijn, maar daarna in principe in het geheugen blijven. Op een gegeven moment komt het einde van het geheugen in zicht, en gaan we weer bestanden die we waarschijnlijk niet heel binnenkort nodig hebben weer uit het geheugen verwijderen. So far, so good. Het probleem is echter dat het geheugen gereserveerd blijft voor de applicatie, of in ieder geval, daar lijkt het op. Na het unloaden van gegevens is het geheugengebruik niet of niet significant gedaald, maar we kunnen wel nieuwe gegevens laden zonder dat het geheugengebruik stijgt.
We meten het vrije geheugen door de som te nemen van 'FreeMem', 'Buffers' en 'Cache' uit /proc/meminfo. Maar: kennelijk is dat niet voldoende om te weten hoeveel er écht beschikbaar is.
Ik leidt hieruit af dat de memorymanager zo werkt dat hij geheugen dat is vrijgegeven door een applicatie (in principe) voor deze applicatie gereserveerd houdt. Klopt dat? En, als dat zo is, bestaat er een manier om uit te vinden hoeveel geheugen dat betreft?
We meten het vrije geheugen door de som te nemen van 'FreeMem', 'Buffers' en 'Cache' uit /proc/meminfo. Maar: kennelijk is dat niet voldoende om te weten hoeveel er écht beschikbaar is.
Ik leidt hieruit af dat de memorymanager zo werkt dat hij geheugen dat is vrijgegeven door een applicatie (in principe) voor deze applicatie gereserveerd houdt. Klopt dat? En, als dat zo is, bestaat er een manier om uit te vinden hoeveel geheugen dat betreft?
My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant