JVM执行引擎、对象实例化、String相关知识

简介: 执行引擎就是执行内存中的指令,将字节码指令解释/编译为对应平台上的本地机器指令,充当了将高级语言翻译为机器语言的使者。

目录

前言

大家好,我是苍何。最近思考了一个问题,为什么会出现公司面试造火箭,工作扭螺丝的现象,包括各种八股文的连环大绝杀问到你不会为主,其实这是考察你的知识面以及掌握的深度,而为什么需要这样呢?归其原因,无非是通过筛选找到那些会思考的人,他们需要的并不是CRUD的工具人,而是会思考能创新的工程师。

当你深刻理解到这点,我想不用刻意去学习,在工作中,肯定会吾日三省吾身。

于是乎,这个重新开始学习编程系列文章出来了。

愿与君共勉!

这是JVM系列文章的第二篇,主要是JVM执行引擎、对象实例化、String相关知识。

一、JVM执行引擎

执行引擎就是执行内存中的指令,将字节码指令解释/编译为对应平台上的本地机器指令,充当了将高级语言翻译为机器语言的使者。

1、执行引擎的工作过程

2、java代码编译和执行的过程



3、什么是解释器,什么是编译器

4、为什么说java是半编译半解释型语言


5、机器码、指令、汇编语言、高级语言








6、HotSpot JVM执行方式


7、JIT编译器


8、方法调用计数器


二、对象实例化

1、创建对象的方式及创建对象步骤


指针碰撞:如果内存是规整的,那么虚拟机将采用的是指针碰撞法来为对象分配内存,用过的内存在一边,没用过的内存在另一边,中间有个指针,分配内存只需要移动指针即可。

2、对象内存布局


对象头里主要包含运行时元数据和类型指针,运行时元数据含GC分代年龄,锁状态标识、哈希值等

3、对象的访问定位


句柄访问:
堆中维护一个句柄池,对象的移动、只需改变句柄的指针值即可,不需要改变栈中的对象引用,效率要低一些


**直接指针:*

三、String相关知识

1、String的基本特性


2、string的内存分配

JDK7及以后的版本字符创常量池在堆中,JDK7之前字符创常量池在永久代中。


3、字符串的拼接操作

整体而言,常量与常量相加,拼接结果放在常量池,只要其中有一个是变量,结果就在堆中

4、intern()的使用







对于程序中大量存在的字符串,尤其存在很多重复的字符串,使用intern()可以大大提高性能

5、G1的string去重操作


目录
相关文章
|
存储 安全 算法
深入剖析JVM内存管理与对象创建原理
JVM内存管理,JVM运行时区域,直接内存,对象创建原理。
46 2
|
2月前
|
存储 算法 安全
【JVM】深入理解JVM对象内存分配方式
【JVM】深入理解JVM对象内存分配方式
31 0
|
3月前
|
存储 算法 Java
[Java]散列表的数据结构以及对象在JVM堆中的存储过程
[Java]散列表的数据结构以及对象在JVM堆中的存储过程
56 1
[Java]散列表的数据结构以及对象在JVM堆中的存储过程
|
1月前
|
缓存 Java
Java中循环创建String对象的内存管理分析
Java中循环创建String对象的内存管理分析
25 2
|
2天前
|
存储 算法 NoSQL
深入浅出JVM(十一)之如何判断对象“已死”
深入浅出JVM(十一)之如何判断对象“已死”
|
2天前
|
存储 自然语言处理 前端开发
深入浅出JVM(七)之执行引擎的解释执行与编译执行
深入浅出JVM(七)之执行引擎的解释执行与编译执行
|
2天前
|
存储 缓存 算法
深入浅出JVM(一)之Hotspot虚拟机中的对象
深入浅出JVM(一)之Hotspot虚拟机中的对象
|
4天前
|
存储 缓存 监控
JVM工作原理与实战(二十四):堆的垃圾回收-对象引用
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了强引用、软引用、弱引用、虚引用、终结器引用等内容。
11 0
|
5天前
|
Java 开发者
干货总结|快速构造String对象及访问其内部成员的技巧
本文详细解释了String类的底层实现,介绍了构造String对象及其访问其内部成员的技巧。
|
5天前
|
存储 缓存 安全
【 Java中String源码分析(JVM视角你不来看看?】
【 Java中String源码分析(JVM视角你不来看看?】
11 0