Ограничение памяти Python? Очистить GC, когда близко к пределу? - PullRequest
1 голос
/ 25 июня 2011

Как мне очистить объекты, собираемые мусором, перед выполнением других операций с интенсивным использованием памяти? Или это делается автоматически при заполнении памяти?

Почему кажется, что Python (+ Eclipse) выдает исключение памяти в 2 ГБ (Win32), тогда как на самом деле некоторая часть памяти не используется в Windows? Определены ли где-нибудь ограничения?

Ответы [ 2 ]

2 голосов
/ 25 июня 2011

Вы можете настроить производительность сборщика мусора с помощью модуля gc - например, с gc.set_threshold - или вы можете "вручную" собрать мусор: gc.collect.Тем не менее, я считаю, что большую часть времени объекты собираются, как только их счетчик обращений обнуляется.

Так что, если говорить прямо, (спасибо delnan!) Сборка мусора является проблемой только при циклическомссылки, которые удерживают рефконтры от достижения нуля.

Обратите также внимание на эту строку из gc документов:

Чтобы отладить текущий программный вызов gc.set_debug(gc.DEBUG_LEAK).

1 голос
/ 25 июня 2011

В 32-битных приложениях Windows ограничение максимальной памяти составляет 2 ГБ. Есть вариант загрузки, который увеличит его до 3Gb . Вы также можете попробовать перейти на 64-битную версию Windows / Python.

...