Если вы спрашиваете, почему объем памяти процесса не уменьшается при освобождении памяти, это на самом деле довольно просто.
Когда в процессе требуется дополнительная память (например, когда вы пытаетесь выделить какую-то память, но ее там недостаточно), процесс запрашивает больше памяти у операционной системы.
Однако, когда вы освобождаете эту память, нет необходимости возвращать ее обратно в ОС, гораздо более вероятно, что в какой-то момент она снова понадобится, поэтому процесс просто хранит ее. в случае.
Думайте об этом так:
A B C
+--------+ +--------+ +--------+
| Memory | | Memory | | Memory |
| for | <-> | in | <- | in |
| you | | heap | | OS |
+--------+ +--------+ +--------+
Вполне вероятно, что память перемещается в обе стороны между A
и B
, когда вы выделяете и освобождаете ее, но она только из C
в B
необходимо. Конечно, когда ваш процесс завершается, все, что находится в B
, будет возвращено.
Имейте в виду, что это концептуальное описание, вероятно, нет никакой фактической памяти, выходящей из ОС, точнее будет то, что ОС просто расширяет ваше адресное пространство до больший размер. Фактическая память распределяется по мере необходимости любым имеющимся у вас менеджером виртуальной памяти.