我正在开发一个有很多重复字符串的应用程序,我的任务是消除它们以减少内存使用。我的第一个想法是用来String.intern
保证一个 String 的引用只会存在。它可以减少堆内存,但它增加了 PermGen 太多了;事实上,因为有很多字符串只声明一次,应用程序使用的内存总量实际上增加了。
在寻找其他想法后,我发现了这种方法:https ://stackoverflow.com/a/725822/1384913 。
它发生了与 String.intern 相同的事情:String 使用量减少了,但我保存的内存正在用于WeakHashMap
和WeakHashMap$Entry
类中。
有没有一种有效的方法来为每个不花费与我正在恢复的内存量相同的内存量的字符串维护一个引用?