第16章_字节码指令集 2.1. 概述2.1.1. 执行模型如果不考虑异常处理的话,那么Java虚拟机的解释器可以使用下面这个伪代码当做最基本的执行模型来理解 do{ 自动计算PC寄存器的值加1; 根据PC寄存器的指示位置,从字节码流中取出操作码; if(字节码存在操作数) 从字节码流中取出操作数; 执行操作码所定义的操作; }while(字节码长度>0); 2.1. 2022-05-24 JVM #Java #JVM
第15章_Class文件结构 2.1. Class字节码文件结构Class文件结构如下: 魔数 Class文件版本 常量池 访问标志 类索引、父类索引、接口索引集合 字段表集合 方法表集合 属性表集合 Class文件的总体结构如下: 类型 名称 说明 长度 数量 魔数 u4 magic 识别Class文件格式 4个字节 1 版本号 u2 minor_version 副版本号(小版本) 2个字节 1 2022-05-23 JVM #Java #JVM
第14章_Class文件概述 1.1字节码文件是什么在Java编程语言中,Class文件是Java源代码编译后生成的二进制文件。它包含了编译后的Java字节码以及类信息和元数据。每个Java类都对应一个Class文件,这个文件中包含了该类的所有信息,包括其成员变量、方法、父类和接口信息等。 在Java应用程序运行时,JVM会根据Class文件来加载和解释字节码,以便正确地执行Java程序。因此,Class文件是Java应用程序 2022-05-22 JVM #Java #JVM
第13章_垃圾回收 13.1. GC分类与性能指标13.1.1. 垃圾回收器概述垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 从不同角度分析垃圾收集器,可以将GC分为不同的类型。 13.1.2. 垃圾回收器分类按**线程数分**,可以分为串行垃圾回收器和并行垃圾回收器。 串行回收指的是在同一时间段 2022-05-21 JVM #Java #JVM
第12章_垃圾回收相关概念 12.1. System.gc()的理解在默认情况下,通过system.gc()或者Runtime.getRuntime().gc() 的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。 然而System.gc() 调用附带一个免责声明,无法保证对垃圾收集器的调用。(不能确保立即生效) JVM实现者可以通过System.gc() 调用来决定JVM的GC行 2022-05-20 JVM #Java #JVM
第11章_垃圾回收概述及算法 11.1. 垃圾回收概述11.1.1. 什么是垃圾? 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 关于垃圾收集有三个经典问题: 哪些内存需要回收? 什么时候回收? 如何回收? 垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展,Java的垃圾收集 2022-05-19 JVM #Java #JVM
第10章_StringTable 10.1.String类的结构特征 String:字符串,使用一对””引起来表示 String声明为final的,不可被继承 String实现了Serializable接口:表示字符串是支持序列化的。 String实现了Comparable接口:表示string可以比较大小 String在jdk8及以前内部定义了final char[] value用于存储字符 串数据。JDK9时改为by 2022-05-18 JVM #Java #JVM
第09_章_执行引擎 9.1. 执行引擎概述执行引擎属于JVM的下层,里面包括解释器、及时编译器、垃圾回收器 执行引擎是Java虚拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直 2022-05-17 JVM #Java #JVM
第08章_对象实例化和直接内存 8.1. 对象实例化面试题 美团 对象在JVM中是怎么存储的? 对象头信息里面有哪些东西? 蚂蚁金服 Java对象头有什么? 8.1.1. 创建对象的方式 new:最常见的方式、Xxx的静态方法,XxxBuilder/XxxFactory的静态方法 Class的newInstance方法:反射的方式,只能调用空参的构造器,权限必须是public Constructo 2022-05-16 JVM #Java #JVM
第07章_方法区 7.1. 栈、堆、方法区的交互关系 对于以下图片 将对象的类型加载到方法区 如果当前对象是存在于一个方法当中,则person变量存储在虚拟机栈当中 创建的对象存储在堆内存当中 堆、栈和方法区之间的交互关系如下: 对于Java虚拟机栈中的局部变量表中的对象引用指向堆空间当中的对象实例,其中堆空间中的对象实例 当中存在到对象类型数据的指针,其指向了方法区当中对应的对象类型。 7.2方 2022-05-15 JVM #Java #JVM