黑马JVM总结(七)

(1)StringTable_编译器优化

"a"+"b"对应#4:是去常量池中找ab的这个符号

astore 5:是把这个存入编号为5的局部变量

"ab"对应的指令 #4,跟"a"+"b"对应#4下面弄是一样的

在执行s3="ab"这行个代码时,去常量池中找ab这个对象,发现串池中没有ab这个对象,创建放入串池,执行到s5="a"+"b"这行代码时**,去常量池中找ab这个对象,串池中有了ab这个对象。不会再创建新的对象了,他们的值是相等的**

所以astore到 3的变量和astore到 5 的变量都是串池中的ab字符串对象

(2)StringTable_字符串延迟加载

通过IDEA的Memory查看运行时String对象的个数,

跳转下一步:

在往下走是上面创建的对象串池中有了不会再创建新的对象啦

(3)StringTable_intern_1.8

new String("a")+new String("b") 底层调用是StringBuild通过newString("ab")是存放到堆中的

可以通过intern把堆中的对象放到串池中并返回,"ab"就不会新建对象了,会返回true

最后串池中已有这个ab,"ab"就不会新建对象了,会返回true

如果先有"ab",下面创建的对象s,调用intern方法是,因为串池中已经有了所以不会把队中的对象再放入串池,而是返回串池中的对象,所以s不等于x

(4)StringTable_intern_1.6

在jdk1.6

1.6的时候把s这个对象拷贝一份放入串池

"ab" 发现串池中已经有了不会重新创建对象,相等于的是串池中的对象,所以x不等于s这个对象

相关推荐
网络工程小王22 分钟前
【LangGraph 状态持久化(Checkpoint)详解】学习笔记
jvm·人工智能·笔记·langchain
Devin~Y27 分钟前
电商AIGC智能客服面试:JVM调优、Spring Cloud微服务、Redis缓存、Kafka消息、K8s观测与RAG落地
java·jvm·spring boot·redis·spring cloud·kafka·kubernetes
2301_7693406739 分钟前
HTML函数运行时触控屏失灵是硬件故障吗_输入层兼容性测试【详解】
jvm·数据库·python
2301_809204705 小时前
bootstrap怎么实现鼠标悬停切换图片预览功能
jvm·数据库·python
weixin_4440129312 小时前
c++如何将std--vector直接DUMP到二进制文件_指针地址直写【附代码】
jvm·数据库·python
woxihuan12345612 小时前
Go语言中--=运算符详解:位右移赋值操作的原理与应用
jvm·数据库·python
m0_6908258213 小时前
如何备份被破坏的数据表_强制跳过错误的导出尝试
jvm·数据库·python
m0_7335654613 小时前
JavaScript中Reflect-ownKeys获取所有键名的优势
jvm·数据库·python
2301_8159019714 小时前
C#怎么使用协变和逆变 C#泛型中的in和out关键字协变逆变是什么意思怎么用【语法】
jvm·数据库·python
m0_4636722014 小时前
SQL优化SQL关联查询中的排序字段_减少临时空间占用与内存开销
jvm·数据库·python