LRU字节缓存java

Abb*_*don 5 java

我需要在java中实现具有最大大小的缓存,希望使用内存中缓存的实际大小而不是缓存中的元素数量来实现.此缓存基本上将String作为键,String作为值.我已经使用java的LinkedHashMap结构实现了缓存,但问题是如何知道缓存的实际大小,以便我可以调整策略以在大小太大时删除对象.

想要使用检测包的getObjectSize()计算它,但似乎没有按预期工作.

当我执行getObjectSize(一个字符串)时,无论字符串的大小是多少,它都返回相同的大小:32.我猜它只是使用字符串的引用大小或类似的东西,而不是内容.所以不知道如何有效地解决这个问题.

你有什么想法 ?

非常感谢!

Whi*_*g34 4

您可能需要考虑使用Ehcache基于内存的缓存大小调整