MicroPython:Библиотеки/gc: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) |
||
Строка 14: | Строка 14: | ||
* gc.mem_alloc() – возвращает количество байтов, выделенных в куче. В CPython этой функции нет, она сделана специально для MicroPython. | * gc.mem_alloc() – возвращает количество байтов, выделенных в куче. В CPython этой функции нет, она сделана специально для MicroPython. | ||
* gc.mem_free() – возвращает количество свободных байтов в куче или «-1», если оно неизвестно. В CPython этой функции нет, она сделана специально для MicroPython. | * gc.mem_free() – возвращает количество свободных байтов в куче или «-1», если оно неизвестно. В CPython этой функции нет, она сделана специально для MicroPython. | ||
* gc.threshold([amount]) – задает или возвращает порог выделения памяти, после которого запускается новая сборка мусора. Обычно сборка мусора запускается, только если в памяти не получается выделить место под новые данные, то есть при условии нехватки памяти, которое также называют OOM (от англ. «out-of-memory», т.е. «недостаточно памяти»). При вызове этой функции вдобавок к OOM сборка мусора также будет запускаться каждый раз, когда в куче будет выделено количество байтов, заданное в параметре amount (суммарно с тех пор, когда такое же количество байтов было выделено в прошлый раз). Значение в параметре amount обычно меньше полного размера кучи, и смысл здесь в том, чтобы запустить сборку мусора до того, как в куче закончится память, и с надеждой, что профилактическая сборка мусора предотвратит избыточную фрагментацию памяти. Это эвристический метод, эффект от которого в разных приложениях варьируется – также как и оптимальное значение в параметре amount. | * gc.threshold([amount]) – задает или возвращает порог выделения памяти, после которого запускается новая сборка мусора. Обычно сборка мусора запускается, только если в памяти не получается выделить место под новые данные, то есть при условии нехватки памяти, которое также называют OOM (от англ. «out-of-memory», т.е. «недостаточно памяти»). При вызове этой функции вдобавок к OOM сборка мусора также будет запускаться каждый раз, когда в куче будет выделено количество байтов, заданное в параметре amount (суммарно с тех пор, когда такое же количество байтов было выделено в прошлый раз). Значение в параметре amount обычно меньше полного размера кучи, и смысл здесь в том, чтобы запустить сборку мусора до того, как в куче закончится память, и с надеждой, что профилактическая сборка мусора предотвратит избыточную фрагментацию памяти. Это эвристический метод, эффект от которого в разных приложениях варьируется – также как и оптимальное значение в параметре amount. Вызов этой функции без аргумента вернет текущее значение порога. Если функция вернет «-1», это значит, что порог выделения памяти отключен. | ||
Вызов этой функции без аргумента вернет текущее значение порога. Если функция вернет «-1», это значит, что порог выделения памяти отключен. | |||
Эта функция сделана специально для MicroPython. В CPython есть похожая функция set_threshold(), но из-за разных реализаций сборки мусора ее сигнатура и семантика отличаются. | Эта функция сделана специально для MicroPython. В CPython есть похожая функция set_threshold(), но из-за разных реализаций сборки мусора ее сигнатура и семантика отличаются. | ||
Версия от 20:09, 21 августа 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(), но из-за разных реализаций сборки мусора ее сигнатура и семантика отличаются.
<syntaxhighlight lang="python" enclose="div">