micropython/docs/library/gc.rst

65 lines
2.0 KiB
ReStructuredText
Raw Normal View History

2014-10-31 22:21:37 +00:00
:mod:`gc` -- control the garbage collector
==========================================
.. module:: gc
:synopsis: control the garbage collector
Functions
---------
.. function:: enable()
Enable automatic garbage collection.
.. function:: disable()
Disable automatic garbage collection. Heap memory can still be allocated,
and garbage collection can still be initiated manually using :meth:`gc.collect`.
.. function:: collect()
Run a garbage collection.
.. function:: mem_alloc()
Return the number of bytes of heap RAM that are allocated.
.. admonition:: Difference to CPython
:class: attention
This function is MicroPython extension.
.. function:: mem_free()
Return the number of bytes of available heap RAM, or -1 if this amount
is not known.
.. admonition:: Difference to CPython
:class: attention
This function is MicroPython extension.
.. function:: threshold([amount])
Set or query additional GC allocation threshold. Normally, GC is
triggered when new allocation cannot be satisfied, i.e. on out of
memory (OOM) condition. If this function is called, in addition to
OOM, GC will be triggered each time after *amount* of bytes has been
allocated (in total, since the previous time such amount of bytes
had been allocated). *amount* is usually specified as less than the
full heap size, with the intention to trigger GC earlier than the
heap will be exhausted, and in the hope that early GC will prevent
excessive memory fragmentation. This is a heuristic measure, effect
of which will vary from an application to application, as well as
the optimal value of *amount* parameter.
Calling the function without argument will return current value of
the threshold. Value of -1 means a disabled allocation threshold.
.. admonition:: Difference to CPython
:class: attention
This function is MicroPython extension. CPython has a similar
function - ``set_threshold()``, but due to different GC
implementations, its signature and semantics are different.