- 优点:节省大量内存
- 缺点:略微多占用cpu时间,新生代回收时间略微增加
-XX:+UseStringDeduplication
String s1 = new String("hello");//char[] {'h','e','l','l','o'}
String s2 = new String("hello");//char[] {'h','e','l','l','o'}
- 将所有新分配的字符串放入一个队列
- 当新生代回收时,G1并发检查是否有字符串重复
- 如果它们值一样,让它们引用同一个char[]
- 注意,与String.intern()不一样
- String.intern()关注的是字符串对象
- 而字符串去重关注的是char[]
- 在JVM内部,使用了不同的字符串表
原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/jdk8u20%e5%ad%97%e7%ac%a6%e4%b8%b2%e5%8e%bb%e9%87%8d/