我需要在java中實現一個具有最大大小的緩存,並且想要使用內存中緩存的實際大小而不是緩存中元素的數量。這個緩存基本上將String作爲鍵和String作爲值。我已經使用Java的LinkedHashMap結構實現了緩存,但問題是如何知道緩存的實際大小,以便我可以調整策略以在大小過大時丟棄對象。LRU字節緩存java
想要使用工具包的getObjectSize()來計算它,但它看起來不像預期的那樣工作。
當我做getObjectSize(一個字符串),無論字符串的大小是什麼,它返回相同的大小:32.我想這只是使用字符串的參考大小或類似的東西,而不是內容。所以不知道如何有效地解決這個問題。
你有什麼想法嗎?
非常感謝!
Thx,這應該使工作,可能比我實施的緩存更好,我猜。你會建議什麼類型的緩存?根據條目的數量或緩存的大小?知道應用程序應該在服務器上運行,並且可以使用機器上的所有可用內存。 – Abbadon 2011-04-17 14:28:52