- 优点:节省大量内存
- 缺点:略微多占用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/
相关推荐
-
NIO网络编程之Selector介绍
Selector 要实现异步IO要通过Selector,甚至我们可以通过一个线程管理多个Channel的读写,这是NIO相较BIO的优越之处之一。 Channel可以注册到一个Se...
-
LinkedHashMap源码分析
总结 总结放前面防止太长不看: LinkedHashMap继承自HashMap,为Entry额外维护了两个属性:before和after,可以按照节点的插入顺序或者访问顺序为Ent...
-
深入理解java虚拟机第三版读书笔记10
以下是第十章 前端编译与优化的内容 Java中的编译可能是指: 前端编译:把*.java文件转变成*.class文件的过程 即时编译(JIT):运行期把字节码转变成...
-
AQS及其应用ReentrantLock源码分析
AQS原理 概述 全称是 AbstractQueuedSynchronizer(抽象同步队列),是阻塞式锁和相关的同步器工具的框架。 特点:+ 用 state 属性来表示资源的状态...
-
深入理解java虚拟机第三版读书笔记13
以下是第十三章 Java内存模型与线程的内容 线程安全 当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任...
-
CAS应用之JUC下的原子类
原子整数 AtomicInteger i = new AtomicInteger(0); // 获取并自增(i = 0, 结果 i = 1, 返回 0),类似于 i++ Syste...
-
深入理解java虚拟机第三版读书笔记01
做笔记之前的感言 谈到《深入理解java虚拟机》,在业内可太有名了,是国内的一位大神写的一本关于java虚拟机的畅销书,基本上对java稍有深入的程序员都听说过这本书。不过遗憾的是...
-
SQL优化-从执行策略上提高数据库性能
该文前置知识: SQL优化前置知识之优化前分析 SQL优化前置知识之索引的正确使用姿势 数据库的性能在系统中非常重要,在前面了解了Redis高可用的背景下也了解到了许多问题都会给数...
-
StringTable性能调优
StringTable是jvm运行时常量池表中的字符串常量池,深入理解java虚拟机第三版读书笔记02有相关的介绍。 无论是运行时常量表还是StringTable,他们内部都是通过...
-
谈谈Java中的Iterator
摘要 Iterator的作用? Iterator和Enumeration的区别? Iterator和ListIterator的区别? Iterator和foreach的关联? It...