我存儲了大量相等的字符串。這些值不會經常改變。string.intern沒有使用較少的內存
因爲string.intern()
應該只返回參考,所以我將每個存在ArrayList
中的1億個完全相同的字符串列表中的每一個都進行了實驗。
我期望看到Java內存不斷下降,但存儲一個普通的字符串與一個實際的字符串顯示的差異小於.1%。
我是否錯過了一些東西或者是這種預期的行爲?
列表生成代碼
long max = 100000000;
for(int i =0 ; i < max;i++){
list.add("sometextelidedforbrevity".intern());
}
存儲器使用,而不爲1 242 360 KB,並用1 242 184 KB。
你是如何創建這些字符串?告訴我們你的代碼。他們可能已經被拘留了。 – cdhowie 2013-03-21 18:54:08
你使用字符串文字,還是'new String()'?由於字符串文字自動被自動執行... – 2013-03-21 18:54:43
正在使用多少內存? – 2013-03-21 18:54:48