最初,添加此选项是为了提高SPECjBB性能。增益的增加是由于处理器和DRAM之间的内存带宽要求降低。与在char []中使用char相比,在byte
[]中加载和存储字节会消耗1/2带宽。
但是,这是有代价的。代码必须确定内部数组是byte []还是char []。这会花费CPU时间,并且如果工作负载不受内存 带宽的
限制,则可能导致性能下降。由于增加了复杂性,因此还有代码维护的价格。
由于没有足够多的类似于生产的工作负载显示出可观的收益(也许SPECjBB除外),因此删除了该选项。
这有另一个角度。该选项减少了堆的使用。对于适用的字符串,它将这些字符串的内存使用量减少1/2。取消期权时未考虑该角度。对于内存 容量
受限的工作负载(即必须在有限的堆空间下运行,GC需要花费大量时间),此选项可能会很有用。
如果可以找到足够的内存 容量来 限制生产型工作负载以证明该选件的合理性,则该选件 可能 会被带回。
编辑3/20/2013:
平均服务器堆转储使用String上25%的空间。大多数字符串都是可压缩的。如果重新引入该选项,则可以节省一半的空间(例如〜12%)!
编辑3/10/2016: 与压缩字符串相似的功能在JDK 9 JEP254中又回来了。



