内存管理
在 MaixPy 中, 目前使用了两种内存管理, 一种是 GC(垃圾回收), 另一种是系统堆内存, 两者同时存在。
比如:芯片有 6MiB 内存,加入固件使用了前面的 2MiB, 还剩 4MiB, 默认 GC
使用 512KiB, 剩下的给系统堆内存管理。
-
在
mpy
层面写的代码, 变量都是存在GC
管理的内存块中,比如定义一个变量a = [1,2,3,4]
, 如果GC'
内存不足了, 会自动触发gc.collect()
函数的执行,GC
会自动把没有在使用了的变量给销毁,留出来空间给新的变量使用。GC
使用标记-清除
的方式进行内存回收,有兴趣可以看这里 -
因为
GC
要扫描内存, 如果除了程序占用的内存,剩下的都给GC
,那每次扫描需要耗费大量时间,所以分成了两中内存。 堆内存由C
层面的代码控制,主要用于图片内存, AI内存, LCD 内存, 以及模型加载到内存等
GC
内存的总大小是可以设置的, 所以,根据具体的使用情况可以适当修改GC
内存大小