当前位置: 首页 > news >正文

黑马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把堆中的对象放到串池中并返回,会返回true

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

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

http://www.lryc.cn/news/165772.html

相关文章:

  • Vue3核心语法一
  • 5.11.Webrtc接口的设计原理
  • 2022年09月 C/C++(八级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • Vue3 监听属性-watch
  • JWT安全
  • LabVIEW利用人工神经网络辅助进行结冰检测
  • Linux安装MySQL8.0
  • 【【萌新编写RISCV之前言CPU的部分介绍.3】】
  • dl_model_param
  • Android相机调用-CameraX【外接摄像头】【USB摄像头】
  • 第一个Java程序
  • OpenCV之霍夫变换检测直线
  • lv3 嵌入式开发-11 Linux下GDB调试工具
  • Zabbix监控平台概念
  • 【javaSE】 枚举与枚举的使用
  • NetSuite知识会汇编-管理员篇顾问篇2023
  • 根号分治与多项式的巧妙结合:GYM-104386G
  • 通过FTP高速下载几百G数据
  • cudnn-windows-x86_64-8.6.0.163_cuda11-archive 下载
  • 多线程案例(1) - 单例模式
  • Arduino驱动TCS34725传感器(颜色传感器篇)
  • 知识库网站如何搭建?需要注意这五个要点!
  • 【UE虚幻引擎】UE源码版编译、Andorid配置、打包
  • 树和二叉树的相关概念及结构
  • MySQL安装validate_password_policy插件
  • 数据在内存中的存储——练习3
  • web-案例
  • 第一章 JAVA入门
  • 二叉树详解(求二叉树的结点个数、深度、第k层的个数、遍历等)
  • Apollo配置中心及Python连接