MicroPython:Библиотеки/gc: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
 
(не показана 1 промежуточная версия этого же участника)
Строка 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''.


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


=См.также=
=См.также=

Текущая версия от 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(), но из-за разных реализаций сборки мусора ее сигнатура и семантика отличаются.

См.также

Внешние ссылки