1.4 gc
– 内存管理 API 手册#
该模块实现了部分 CPython 内存管理模块的功能子集。有关详细信息,请参阅 CPython 原始文档:gc。
在 K230
上,新增了以下接口来获取 RT-Smart
系统的内存信息:
sys_heap
: 用于内核应用的内存管理。sys_page
: 用于用户应用的内存管理。sys_mmz
: 用于多媒体驱动内存管理,适用于Sensor
、Display
等模块。
1. 函数#
1.1 enable
#
gc.enable()
启用自动垃圾回收机制。
1.2 disable
#
gc.disable()
禁用自动垃圾回收机制。在禁用状态下,仍可进行堆内存的分配,并且可以通过手动调用 gc.collect()
来执行垃圾回收。
1.3 collect
#
gc.collect()
手动运行垃圾回收过程,回收不再使用的内存。
1.4 mem_alloc
#
gc.mem_alloc()
返回当前已分配的堆内存字节数。
与 CPython 的差异
此功能为 MicroPython 的扩展功能,CPython 并不包含此方法。
1.5 mem_free
#
gc.mem_free()
返回当前可用的堆内存字节数。如果堆剩余的内存数量无法确定,则返回 -1
。
与 CPython 的差异
此功能为 MicroPython 的扩展功能,CPython 并不包含此方法。
1.6 threshold
#
gc.threshold([amount])
设置或查询垃圾回收的分配阈值。当堆内存不足时,通常会触发垃圾回收。如果设置了阈值,则在总共分配了超过设定值的字节后,也会触发垃圾回收。amount
参数通常小于整个堆的大小,目的是在堆耗尽之前提前触发回收,减少内存碎片。此值的效果因应用而异,最佳值需要根据应用场景调整。
不传入参数时,此函数将返回当前的阈值设置。返回值为 -1
表示分配阈值已禁用。
与 CPython 的差异
此函数为 MicroPython 的扩展。CPython 中有类似的 set_threshold()
函数,但由于垃圾回收机制的不同,其签名和语义有所差异。
1.7 sys_heap
#
gc.sys_heap()
查询系统 heap
内存的使用情况,返回一个包含 3 个元素的元组,分别表示 total
(总内存)、free
(可用内存)和 used
(已用内存),单位为字节(Byte)。
1.8 sys_page
#
gc.sys_page()
查询系统 page
内存的使用情况,返回一个包含 3 个元素的元组,分别表示 total
(总内存)、free
(可用内存)和 used
(已用内存),单位为字节(Byte)。
1.9 sys_mmz
#
gc.sys_mmz()
查询系统 mmz
内存的使用情况,返回一个包含 3 个元素的元组,分别表示 total
(总内存)、free
(可用内存)和 used
(已用内存),单位为字节(Byte)。