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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/81112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在PHP8中向数组添加元素-PHP8知识详解

在php8中向数组添加元素有多种方法,在这里主要讲解几个常用的方法:使用方括号[]添加元素、使用array_unshift()函数,向数组的头部添加元素、使用array_push()函数,向数组的尾部添加元素、使用array_splice()函数添加元素。 1、使用…

学习Bootstrap 5的第十三天

目录 提示框 如何创建提示框 实例 指定提示框的位置 实例 弹出框 如何创建弹出框 实例 指定弹出框的位置 实例 关闭弹出框 实例 提示框 提示框是一个小小的弹窗,在鼠标移动到元素上显示,鼠标移到元素外就消失。 如何创建提示框 Bootstrap…

MATLAB入门一基础知识

MATLAB入门一基础知识 此篇为课程学习笔记 链接: link 什么是MATLAB 平时所说的MATLAB既是一款软件又是一种编程语言,只是这种高级解释性语言是在配套的软件下进行开发的 MATLAB的一个特性 MATLAB的一个特性,如果一条语句以英文分号‘;’结尾&…

Ghidra Software Reverse Engineering Framework

安装 Install JDK 17 64-bit 下载 JDK 17 64-bit,并解压 vi ~/.bashrc export JAVA_HOME/usr/local/java/jdk1.8.0_361(jdk路径) export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:$PATHsource…

【题解】JZOJ6703 tree

题意 给定 n n n 个点的树,每个点有点权,每次询问点权大于等于 x x x 的点构成的子图有多少个连通块,动态修改点权,保证修改后点权不小于修改前。 题解 首先有一个显然的结论:森林的连通块个数 点数 - 边数。 这…

LeetCode 332. Reconstruct Itinerary【欧拉回路,通路,DFS】困难

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

Vue3+ElementUI使用

<!DOCTYPE html> <html> <head><meta charset"UTF-8"><meta name"viewport" content"initial-scale1.0,maximum-scale1.0,minimum-scale1.0,user-scalable0, widthdevice-width"/><!-- 引入样式 --><lin…

【C++】list的模拟实现【完整理解版】

目录 一、list的概念引入 1、vector与list的对比 2、关于struct和class的使用 3、list的迭代器失效问题 二、list的模拟实现 1、list三个基本函数类 2、list的结点类的实现 3、list的迭代器类的实现 3.1 基本框架 3.2构造函数 3.3 operator* 3.4 operator-> 3…

JavaScript 基础 - 第1天笔记

JavaScript 基础 - 第1天 了解变量、数据类型、运算符等基础概念&#xff0c;能够实现数据类型的转换&#xff0c;结合四则运算体会如何编程。 体会现实世界中的事物与计算机的关系理解什么是数据并知道数据的分类理解变量存储数据的“容器”掌握常见运算符的使用&#xff0c;了…

bug总结问题集和知识点集(一)

目录 一 bug问题集1. 端口被占用 二 oracle1. oracle查看版本怎么操作2. oracle数据库&#xff1a;参数个数无效![在这里插入图片描述](https://img-blog.csdnimg.cn/6a2eebc164f9406c81525371893bbd11.png)3. ORACLE数据库如何完整卸载? 三 mybatis1. mybatis用注解如何实现模…

Java手写最大子数组和算法(如Kadane算法)和最大子数组和算法(如Kadane算法)应用拓展案例

Java手写最大子数组和算法&#xff08;如Kadane算法&#xff09;和最大子数组和算法&#xff08;如Kadane算法&#xff09;应用拓展案例 1. 算法思维导图 以下是使用mermaid代码表示的Kadane算法的实现原理&#xff1a; #mermaid-svg-rI7hVAVsP1qtjZK7 {font-family:"tr…

学习Node js:raw-body模块源码解析

raw-body是什么 raw-body的主要功能是处理HTTP请求体的原始数据。它提供了以下核心功能&#xff1a; 解析请求体&#xff1a;可以从HTTP请求中提取原始数据&#xff0c;包括文本和二进制数据。配置选项&#xff1a;通过配置项&#xff0c;可以设置请求体的大小限制、编码方式…

【LeetCode-简单题KMP】232. 用栈实现队列

文章目录 题目方法一&#xff1a;用输入栈和输出栈模拟队列 题目 方法一&#xff1a;用输入栈和输出栈模拟队列 只有输出栈为空的时候才能将输入栈的元素补充到输出栈&#xff0c;否则输出栈不为空&#xff0c;如果再从输入栈往输出栈填充元素&#xff0c;就会弄乱队列的先进先…

【SpringMVC】拦截器JSR303的使用

【SpringMVC】拦截器&JSR303的使用 1.1 什么是JSR3031.2 为什么使用JSR3031.3 常用注解1.4 Validated与Valid区别1.5 JSR快速入门1.5.2 配置校验规则# 1.5.3 入门案例二、拦截器2.1 什么是拦截器2.2 拦截器与过滤器2.3 应用场景2.4 拦截器快速入门2.5.拦截器链2.6登录案列权…

合同矩阵充要条件

两个实对称矩阵合同的充要条件是它们的正负惯性指数相同。 正惯性指数是矩阵正特征值个数&#xff0c;负惯性指数是矩阵负特征值个数。 即合同矩阵的充分必要条件是特征值的正负号个数相同。 证明&#xff1a; 本论证中的所有矩阵先假设为对称矩阵&#xff0c;但不限于对称…

接口测试——接口协议抓包分析与mock_L1

目录&#xff1a; 接口测试价值与体系常见的接口协议接口测试用例设计postman基础使用postman实战练习 1.接口测试价值与体系 接口测试概念 接口&#xff1a;不同的系统之间相互连接的部分&#xff0c;是一个传递数据的通道接口测试&#xff1a;检查数据的交换、传递和控制…

设计模式之职责链模式

职责链模式:使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。 这里发出这个请求的客户端并不知道这当中的哪一个对象最终处理这个请求&am…

ajax 中 success 方法的 return

做前后台交互时会经常用到 ajax&#xff0c;有时候会遇到这样的情况&#xff0c;我们在 a 方法中调用 b 方法&#xff0c;b 方法里是一个 ajax&#xff0c;成功请求后会返回一个结果 data&#xff0c;而我们希望通过 b 方法的返回值获取到 data&#xff0c;我们的代码可能是这样…

TCP详解之三次握手和四次挥手

TCP详解之三次握手和四次挥手 1. TCP基本认识 1.1 什么是 TCP TCP是面向连接的、可靠的、基于字节流的传输层通信协议。 1.2 TCP协议段格式 我们先来看看TCP首部协议的格式 我们先来介绍一些与本文关联比较大的字段&#xff0c;其他字段不做详细阐述。 序列号&#xff1a…

2023面试知识点一

1、新生代和老年代的比例 默认的&#xff0c;新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数 –XX:NewRatio 来指定 )&#xff0c;即&#xff1a;新生代 ( Young ) 1/3 的堆空间大小。老年代 ( Old ) 2/3 的堆空间大小。其中&#xff0c;新生代 ( …