由于Java默认的字符串池机制备受批评,我正在寻找替代方案。
您能否建议一个API作为Java字符串池机制的良好替代品?我的应用程序使用Java 6。我的主要需求是通过字符串池机制避免重复字符串。
有关不良消息:
- 字符串池机制是通过本地方法实现的。C语言实现使用了固定大小的约1000个条目,并且对大量字符串的处理效率很低。
- Java 6在Perm gen区域存储了字符串池中的字符串。因此,它们不会被垃圾回收并可能导致perm gen错误。我知道这在Java 7中已经修复,但我不能升级到Java 7。
为什么需要使用字符串池机制?
- 我的应用程序是一个服务器应用程序,堆大小为10-20G,针对不同的部署。
- 在分析过程中,我们发现数十万个字符串是重复的,通过避免存储重复的字符串,我们可以显着提高内存使用率。
- 内存一直是我们的瓶颈,因此我们针对其进行了优化,而不是进行任何过早的优化。