内存调用问题

Viewed 75

image.png

  1. 如上文档介绍有三种内存 heap page mmz 那么在为micropython适配C库的时候 以上三种不同的内存要分别调用什么函数才能使用它? 或者说我应该调用哪一个?
  2. 如下图所示 当我使用m_new这个函数的时候 内存是不是都是从gc.mem_alloc()所查询的地方分配 而不是从gc.sys_xxx所查询的地方分配的?
  3. 如果上一条成立 那是不是我调用的所有类似于m_new_xxx和mp_obj_new_xxx开头的函数都是从GC中分配的内存?
  4. 如果我需要增大gc的内存该怎么做? 也就是修改函数gc.mem_free()所返回的内存区域的大小

image.png

1 Answers

m_new_xxx都是从gc中分配的,sys_xxx和m_new里都没有关系,sys_mmz是分配给了摄像头,display等模块使用。

再看一眼别的问题呢大哥 没有相关的文档 实在不知道该怎么写了

https://github.com/canmv-k230/canmv/blob/canmv_k230/port/core/main.c#L76 修改这里可以增大micropython里的gc内存大小。

还有几个问题很疑惑 1. 当我直接使用malloc的时候 内存是从sys_page中分配的吗? 2. gc的内存是从sys_page中分配的吗? 3. sys_page已用410M 这是正常的吗? 明明啥应用都还没跑啊 我想要更多的内存应该如何做? 是否有参考文档?
日志 : ↓
当前可用的gc堆内存: 15.81271MB
当前已分配的gc堆内存: 0.002075195MB
系统 heap 内存的使用情况: 总共:64.0MB, 可用:21.82378MB, 已用:47.86802MB
系统 page 内存的使用情况: 总共:440.4883MB, 可用:30.01172MB, 已用:410.4766MB
系统 mmz 内存的使用情况: 总共:511.0MB, 可用:0.0MB, 已用:511.0MB
系统内存大小: 1024.0 MB