2011-03-31 40 views

回答

2

沒有關於您的系統的任何其他信息,我會說創建一個特定的字符串池將落入過早的優化類別。如果你的系統確實是非常繁重的字符串操作並且分析顯示String對象是主要垃圾收集發生的原因,那麼我建議將StringBuilder作爲替代品,並且深入理解使用Strings的最佳實踐,而不是爲他們創建一個緩存。

6

字符串可以來自很多地方,默認情況下只有字符串字符串在字符串池中。例如,當您撥打BufferedReader.readLine()時,它返回的字符串不在字符串池中。

無論是使用String.intern()還是使用規範化映射來合併這些字符串是否合理,取決於您擁有多少重複以及可以節省多少內存以減少重複。

例如,如果您正在閱讀XML文件,那麼對規範化元素名稱可能非常有用。如果您正在閱讀地址數據文件,則可能需要對郵政編碼和/或城市名稱進行規範化。然而,在這兩種情況下,我會考慮使用Map而不是調用intern(),因爲後者消耗了permgen內存(這是比普通的堆內存稀少的資源)。

+0

+1 XML,很好的例子 – davin 2011-03-31 19:32:50

相關問題