![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 87
十八度的天空
这个作者不懒,但什么都没留下…
展开
-
第六节 执行引擎
一、字节码执行引擎概述1、虚拟机和物理机执行引擎的区别虚拟机和物理机都具有代码执行能力。物理机的执行引擎建立在处理器、硬件、指令集和操作系统层面的。而虚拟机的执行引擎由自己实现的,可以自行制定指令集和执行引擎结构体系,并且能够执行那些不被硬件直接支持的指令集格式。2、JVM执行引擎不同的虚拟机里面,可以单一或同时支持解释执行和编译执行。所有的JVM虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程字节码解析的等效过程,输出的是执行结果。二、运行时栈帧结构1、概述栈帧是一种支原创 2020-09-16 19:06:03 · 148 阅读 · 0 评论 -
第五节 字符串底层实现
一、常量池1、常量池分类(1)class文件中的常量池:存在于硬盘上,使用命令“javap -verbose”可以查看;(2)运行时常量池:InstanceKlass的一个属性,ConstantPool* _constants,存放在方法区(元空间);(3)字符串常量池:String Pool,存在于堆区,底层是StringTable,StringTable继承自HashTable。二、StringTable1、StringTable类的继承关系(Hasht...原创 2020-09-16 18:55:38 · 515 阅读 · 0 评论 -
第四节 JVM运行模型
一、内存池与JVM内存模型1、class文件在JVM中的运行图2、JVM内存模型和JMM(Java Memory Model)的区别(1)JMM:Java内存模型,用于多线程之间的线程通信。(2)JVM内存模型:包含程序计数器、虚拟机栈、本地方法栈、堆、方法区。在JVM内部使用JMM将线程堆和堆之间的内存分开。3、Java代码执行顺序(1)首先将.java文件通过javac命令(javac.exe)编译成.class文件;(2)接着通过java命令(java.exe)执.原创 2020-09-16 18:45:12 · 252 阅读 · 0 评论 -
第三节 字节码文件
一、Class文件前言1、概念:Class文件是以一组以8位字节为基础,各个数据按照严格的顺序格式排列的二进制流。当需要用到8字节以上空间的数据是,则会按照高位在前【Big-Endian】的方式分割成若干个8位字节进行存储。2、不同语言可以在JVM上运行的本质:统一转化成class,JVM再去加载解析class,变成二进制文件让计算机执行3、Class文件组成图(共16种)二、Class文件详解1、魔数(1)固定值:固定值:ca fe ba be(十六进制)(..原创 2020-09-16 18:40:00 · 260 阅读 · 0 评论 -
第二节 类加载器和双亲委派机制
一、类加载器系统0、类加载器模型1、类加载器的概念通过类的全限定名来获取此类的二进制流描述的代码称为类加载器。类加载器是在JVM外部实现的,目的是为了让应用可以去加载自定义的类。2、类加载器的分类以及作用(1)启动类加载器【BootstrapLoader】:没有实体,只是一段定义加载的逻辑,本质上调用的是“sun/launch/LauncherHelper”,执行该类的checkAndLoadMain()方法(2)扩展类加载器【ExtClassLoader】:逻辑上的父类为.原创 2020-09-16 18:30:56 · 177 阅读 · 0 评论 -
第一节 类加载与oop-klass(指针-类)模型
一、oop-Klass类模型1、MetaSpaceObj类继承关系2、类的源信息的存储详解(1)InstanceKlass:存储对象元信息(2)InstanceMirrorKlass:存储非引用对象的元信息(3)InstanceRefKlass:存储引用对象的元信息(4)ArrayKlass:存储数组类的元信息TypeArrayKlass:基本数组数据类型在JVM中的存在形式(对象为TypeArrayOopDesc)ObjArrayKlass:引用数组类型数据类型在.原创 2020-09-16 18:26:42 · 358 阅读 · 0 评论 -
Java虚拟机番外篇:堆
一、堆的概述1、堆的图解(此图摘抄自鲁班学院)2、概述:在JVM启动时创建,唯一目的就是存放对象实例,几乎所有的对象都在堆区创建。线程共享内存区。3、分类:新生代(Eden:From Survivor:To Survivor, 默认比例8:1:1)和老年代,默认比例是(1:2)。4、最值:最小为物理内存的1/64,最大为物理内存1/4。5、进入老年代的条件(1)15次gc依然存活的对象:由于分代字段为4个字节,所以最大为15,不能调节成20;(2)大对象:对象大小占.原创 2020-08-17 13:38:07 · 308 阅读 · 0 评论 -
Java虚拟机(二):类文件详解
上一篇:Java虚拟机(一):内存结构详解一、Class类文件相关概念1、class文件概念Java中的class文件是.java文件编译后的.class文件,其本质上是一张表。在JVM中,Class文件本质上是一个二进制流。class文件有着严格的定义规则,它以16进制表示,以8位字节为一组作为一个基本单位,中间没有任何空格或分隔符,各个数据项目按照严格的顺序排列。如果有需要占到8个...原创 2019-11-05 17:07:57 · 239 阅读 · 0 评论 -
Java虚拟机(零):JVM概述
一、Java概述Java不仅仅是一门编程语言,还是一个由一个一系列计算机软件和规范形成的技术体系。(引自《深入理解Java虚拟机--JVM高级特性与最佳实践》周志明 著)二、Java的技术体系1、从传统意义上划分Java语言 Java虚拟机 Java API类库 Class文件格式 第三方类库JDK包括Java语言、Java虚拟机、Java API类库;(JDK:Java...原创 2019-08-29 20:26:02 · 171 阅读 · 0 评论 -
Java虚拟机(一):内存结构详解
上一篇:Java虚拟机(零):JVM概述一、JVM内存管理概述为什么Java虚拟机有内存管理机制?Java语言与C++相比,有一个很大的特点:不用手动管理内存。这样减少了对内存的人为操作,尽可能的避免了由于指针所导致的内存泄露问题。但如果不手动管理内存,那内存该由谁来管理呢?此时,Java虚拟机便担当起了这个重任。为了更好的去管理内存,JVM便设计了一套自己的内存管理机制。二、JVM...原创 2019-09-03 11:15:10 · 150 阅读 · 0 评论