在java9中,String类对比以前做了很多的优化,其中引入了一个新常量“COMPACT_STRINGS”,作用是压缩String对象在heap中的空间占用。
比如你的字符串全是拉丁文,比如"hello world",每个字符用过UTF-16编码方式储存在java堆汇中,将占用2*11byte,然而众所周知,像字符'h’其实只需要用一个字节就能储存,这就导致储存这样一个字符串将会浪费一半不必要的空间。java9中通过COMPACT_STRINGS来压缩(compress)这样的字符串,具体操作如下:当创建String对象时,会判断COMPACT_STRINGS是否启动,启动的话,对字符数组进行判断,是否全是能在Latin-1编码方式下储存的字符;若是,则将字符数组的储存空间进行压缩;若不是,则将按原来方式进行储存。
总结:以后多String对象能不用中文字符就别用了。