MicroPython:Библиотеки/gc: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=Модуль gc – управление сборщиком мусора<ref>[http://docs.micropython.org/en/latest/library/gc.html docs.micropython.org - ]</ref>= | =Модуль gc – управление сборщиком мусора<ref>[http://docs.micropython.org/en/latest/library/gc.html docs.micropython.org - gc – control the garbage collector]</ref>= | ||
В этом модуле реализована часть функционала соответствующего модуля [[CPython]]. Более подробно читайте в документации к [[CPython]] о модуле ''gc''. | В этом модуле реализована часть функционала соответствующего модуля [[CPython]]. Более подробно читайте в документации к [[CPython]] о модуле ''gc''. |
Текущая версия от 00:01, 25 августа 2020
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Модуль gc – управление сборщиком мусора[1]
В этом модуле реализована часть функционала соответствующего модуля CPython. Более подробно читайте в документации к CPython о модуле gc.
Функции
- gc.enable() – включает автоматическую сборку мусора.
- gc.disable() – отключает автоматическую сборку мусора. Память в куче по-прежнему можно выделять, а сборку мусора по-прежнему можно запускать вручную при помощи gc.collect().
- gc.collect() – запускает сборку мусора.
- gc.mem_alloc() – возвращает количество байтов, выделенных в куче. В CPython этой функции нет, она сделана специально для MicroPython.
- gc.mem_free() – возвращает количество свободных байтов в куче или «-1», если оно неизвестно. В CPython этой функции нет, она сделана специально для MicroPython.
- gc.threshold([amount]) – задает или возвращает порог выделения памяти, после которого запускается новая сборка мусора. Обычно сборка мусора запускается, только если в памяти не получается выделить место под новые данные, то есть при условии нехватки памяти, которое также называют OOM (от англ. «out-of-memory», т.е. «недостаточно памяти»). При вызове этой функции вдобавок к OOM сборка мусора также будет запускаться каждый раз, когда в куче будет выделено количество байтов, заданное в параметре amount (суммарно с тех пор, когда такое же количество байтов было выделено в прошлый раз). Значение в параметре amount обычно меньше полного размера кучи, и смысл здесь в том, чтобы запустить сборку мусора до того, как в куче закончится память, и с надеждой, что профилактическая сборка мусора предотвратит избыточную фрагментацию памяти. Это эвристический метод, эффект от которого в разных приложениях варьируется – также как и оптимальное значение в параметре amount. Вызов этой функции без аргумента вернет текущее значение порога. Если функция вернет «-1», это значит, что порог выделения памяти отключен. Эта функция сделана специально для MicroPython. В CPython есть похожая функция set_threshold(), но из-за разных реализаций сборки мусора ее сигнатура и семантика отличаются.