Ответ 1
Множество факторов зависит от того, возвращает ли Python эту память в базовую ОС или нет, что, вероятно, связано с тем, как вы пытаетесь определить, освобождается ли память. CPython имеет объединенную систему распределения, которая имеет тенденцию удерживаться в освобожденной памяти, чтобы ее можно было повторно использовать эффективным образом (но эти последующие распределения не увеличивают объем вашей памяти с точки зрения ОС), что может быть тем, re вид.
Кроме того, на некоторых платформах unix процессы не освобождают освобожденную память до ОС до тех пор, пока приложение не закроется (или произойдет какое-то другое значительное событие). Даже если вы находитесь в ситуации, когда весь пул освобожден (и, следовательно, Python может решить освободить(), а не держать его открытым для будущих объектов), ОС все равно не освободит эту память для использования другими процессами (но может использоваться для дальнейшего перераспределения в исходном процессе). В общем, это хорошо для сокращения фрагментации памяти и не имеет слишком большого количества недостатков, поскольку неиспользуемая память процесса будет выгружаться на диск. Windows выпускает память процесса обратно в ОС для использования любым новым распределением (которое вы можете увидеть в диспетчере задач), поэтому попытка этого в Windows, скорее всего, даст вам другой результат.
В конце концов, как управлять освобожденной памятью процесса является областью действия операционной системы, и существуют различные схемы (с переменами и минусами), используемые таким образом, что просто поиск в вашем системном информационном инструменте по выбору не обязательно скажет вам вся правда.