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