为了限制程序的总内存大小,所以根据 runtime MemStats 的值来限制用于缓存的结构数组是否允许 append 。 但是带来的问题是在等待 gc 的时间内程序基本处于半睡眠状态,运行效率不高。 所以萌生了想手动管理内存的想法。首先我需要限制单个 struct 的最大内存为 4kb,然后限制[] struct 最大为 1024, 那么可以预先生成一个池
rows := 1024
cols := 4096
pool := make([][]byte, rows)
for i := 0; i < rows; i++ {
pool[i] = make([] byte, cols)
}
这样得到一个 byte 池,然后再建立一个状态数组因维护每个坑的使用状态,把 struct 转成[]byte 从 pool 存入 /取出
你们觉得行不行。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.