|
|
1
3
如果软/弱引用是不可能的,那么我会看到两个(非常重要的)选项: 1)使用Java工具来检查添加到映射中的项的实际大小。仪表接口提供 "shallow" size 对于一个对象,您将需要更多的代码来探索引用(并避免计算重复项!). Here 是计算一个对象的深度大小的解决方案。 2)使用jmx跟踪gcs之后的堆大小,并在达到某个危险阈值时更改映射行为。请参阅中的“通知”部分 MemoryMXBean javadoc . |
|
|
2
2
地图本身只包含固定大小的条目,其中包含对地图中“包含”的实际对象的引用。您将需要覆盖所有映射转换方法(即
|
|
|
3
1
正如其他人提到的,您可以使用代理检测来完成这项工作。sizeof项目为这种方法提供了一个方便的实用程序。这可以与ConcurrentLinkedHashMap的加权值概念一起使用,在加权值概念中,加权器决定一个值消耗多少容量单位。这样,除了传统的最大条目数约束之外,缓存还可以正确处理集合或内存限制。 如果您希望被堆绑定,那么有一个concurrentlinkedHashMap早期版本的分叉可以做到这一点。它保留了原始版本的Apache许可证,因此可以根据您的需要进行调整,因为它与伏地魔打包在一起。 http://sizeof.sourceforge.net/ |
|
|
4
0
你可以包装一个
|
|
|
GG33 · 在docker中缓存npm包 1 年前 |