Wenn / wann wird der freigegebene Heapspeicher zurückgefordert?
Ich habe über Nacht Speichertests auf einem eingebetteten Linux-System ausgeführt. Mit vmstat habe ich beobachtet, dass der freie Speicher mit der Zeit stetig abnimmt. Nach einigenklatscht Analyse inprocfswächst der Haufen eines Prozesses ungefähr gleich schnell. Ich vermutete ein Speicherleck und fand ein paar Stellen im Code, an denennew
unddelete
werden regelmäßig verwendet. Allerdings habe ich keinen gesehennew
Anrufe ohne Übereinstimmungdelete
Anrufe.
Ich habe den Speichertest erneut ausgeführt und heute Morgen die Speicher-Caches mit dem folgenden Aufruf gelöscht
echo 3 > /proc/sys/vm/drop_caches
Der in vmstat aufgelistete freie Speicher ist auf einen Wert gesunken, der in der Nähe des Zeitpunkts liegt, zu dem der Test gestartet wurde.
Fordert der Kernel regelmäßig nicht verwendete Heap-Seiten zurück? Wenn ja, gibt es andere Zeiten als die oben genannten, in denen dies durchgeführt wird? Wahrscheinlich, wenn der freie Speicher eine bestimmte Schwelle unterschreitet?