通用共享内存
共享内存使用便捷,功能强大,但是会有几个显著的问题阻碍大家使用:
1、增删不当,造成内存泄漏;共享内存依赖一个全局的key,没有好的清理手段。
2、内存大小不好控制,动态管理则会引入更多复杂的情况;即使是加个header,一次性的动态大小,写起来也非常麻烦。
3、同样由于key的存在,共享内存管理容易混乱,万一冲突后果很严重。
3、语言和框架越来越强大,大多数人没有直接管理内存的经验,心里恐惧,不敢操作。
上面提到的1、2、3三个问题,如果通过统一的入口操作,就很容易解决。
一个简单的通用共享内存框架很容易就能支持以下功能:
1、提供接口获取特定大小的共享内存,支持是否对应到文件做简单持久化;
2、提供释放共享内存的接口,并能删除长期不使用的内存,使用方无需关心如何释放;
虽然还是需要提供一个key,但是框架可以统一约束key的规则。
实现思路如下:
1、固定大小的header,保存key对应的共享内存key及文件路径
2、更新使用频率和使用时间,主动删除长期不使用的文件
最好能做成一个简单的内存管理器,支持快速返回特定大小(1KB、1M、1G)的共享内存,并绑定key。