黑马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这个对象

相关推荐
LCG元1 小时前
【实战】树莓派物联网开发:DHT11温湿度采集与MQTT云上报全流程
java·jvm·物联网
欢醉3 小时前
干货分享Gateway踩坑实录:Netty直接内存把网关吃垮了OutOfDirectMemoryError
jvm·springcloud
wuminyu1 天前
JDK21 FFM异步读取MSG_ZEROCOPY错误队列揭秘
java·linux·c语言·jvm·c++
YH55269841 天前
GPT‑5.6 Sol 原本支持 1M 上下文,Codex 现已放开此前限制,如何看待这次调整?
java·jvm·人工智能·gpt·算法·chatgpt
2602_959960922 天前
谢飞机面试大厂:Spring Boot、JVM、Redis、Kafka、微服务与音视频搜索场景求生实录
java·jvm·spring boot·redis·面试题
wuminyu2 天前
JDK21中虚拟线程和FFM协同实现高并发源码剖析
java·linux·c语言·jvm·c++
SWAGGY..2 天前
【C++进阶】:(1)继承机制详解
java·jvm·c++
一木 之林2 天前
三、内存管理、指针与堆栈
c语言·jvm·c++
2602_959960922 天前
Java大厂面试实录:Spring Boot、Redis、Kafka、Elasticsearch、分布式事务与云原生高并发系统
java·jvm·spring boot·redis·面试题
鱼鳞_2 天前
热门八股-JVM
java·jvm