相关疑难解决方法(0)

String.intern()的性能损失

很多人都在谈论String.intern()的性能优势,但实际上我对性能损失可能更感兴趣.

我主要担心的是:

  • 搜索成本:intern()用于确定常量字符串是否存在于常量池中的时间.该成本如何随着该池中的字符串数量而扩展?
  • 同步:显然,整个JVM共享常量池.当从多个线程一遍又一遍地调用intern()时,该池如何表现?它执行了多少锁定?性能如何与争用一起扩展?

我关注所有这些事情,因为我目前正在对使用具有复制,因为字符串太多内存的问题,一个金融应用程序.某些字符串基本上看起来像枚举值,并且只能存在数量有限的潜在值(例如货币名称("USD","EUR"))超过一百万份.在这种情况下,String.intern()似乎是不费吹灰之力,但我担心每次在某处存储货币时调用intern()的同步开销.

最重要的是,一些其他类型的字符串可以具有数百万个不同的值,但每个字符串仍然有数万个副本(例如ISIN代码).对于这些,我担心实习百万串基本上会减慢实习生()方法这么多,以拖垮我的应用程序.

java string performance

41
推荐指数
3
解决办法
8608
查看次数

标签 统计

java ×1

performance ×1

string ×1