我正在寻找一些想法,如果有人知道任何实现细节更好,但我愿意自己编写所需的缓存。
我想要一个只缓存我配置的内存大小的缓存。与应用程序的其他部分相比,缓存部分将使用近乎100%的内存,因此我们可以将应用程序使用的内存总量视为缓存大小(+垃圾)。
是否有获取内存使用量的方法?还是更好地依赖软指针?使用软指针并始终运行在jvm内存限制的顶部可能非常低效,需要大量的cpu周期来进行内存清除?我能否对现有对象进行一些分析,例如myObject.getMemoryUsage()
?
LinkedHashMap
已经具有我的目的所需的足够的缓存命中率,因此我不必编写某些缓存策略怪物,但我不知道如何正确解决这个内存问题。有什么建议? 我不希望 OOME 到处都飞。
最佳实践是什么?