我正在研究一种缓存算法,有些具有挑战性。基本上,它需要分配大量的小对象(双数组,1到256个元素),对象可通过映射值访问,
所谓“大量”,指的是总共约1GB。对象可能需要按需弹出/推入,通常在随机位置,每次一个对象。对象的生命周期通常很长,几分钟或更长时间,但在程序持续时间内,对象可能会多次分配/释放。
在仍然保持合理的分配/释放速度的同时,如何避免内存碎片化,这将是一个好策略?
我使用C++,因此可以使用new和malloc。 谢谢。
我知道网站上有类似的问题,例如Efficiently allocating many short-lived small objects,但有些不同,线程安全对我来说并不是立即的问题。
我的开发平台是Intel Xeon,运行Linux操作系统。 理想情况下,我也希望能在PPC Linux上工作,但这对我来说并不是最重要的。
map[key] = array
。初始化数组的时间可能相当长,通常超过10,000个CPU周期。所谓“大量”,指的是总共约1GB。对象可能需要按需弹出/推入,通常在随机位置,每次一个对象。对象的生命周期通常很长,几分钟或更长时间,但在程序持续时间内,对象可能会多次分配/释放。
在仍然保持合理的分配/释放速度的同时,如何避免内存碎片化,这将是一个好策略?
我使用C++,因此可以使用new和malloc。 谢谢。
我知道网站上有类似的问题,例如Efficiently allocating many short-lived small objects,但有些不同,线程安全对我来说并不是立即的问题。
我的开发平台是Intel Xeon,运行Linux操作系统。 理想情况下,我也希望能在PPC Linux上工作,但这对我来说并不是最重要的。