为了限制程序的总内存大小,所以根据 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 存入 /取出
你们觉得行不行。。