summaryrefslogtreecommitdiffstatshomepage
path: root/docs/library/gc.rst
blob: 7290efa83544ed648f3433115254dccf54a3dbdf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
: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.