
JVM
文章平均质量分 93
~~1112233
这个作者很懒,什么都没留下…
展开
-
JAVA相关编译知识
JAVA相关编译知识总览语言进化史整体流程编译器整体流程词法分析语法分析语义分析中间代码生成目标代码生成器代码优化编译相关知识编译种类热点探测技术编译什么什么时候进行检测,什么时候提交编译请求?收到编译请求,之后的操作?优化措施总结总览语言进化史整体流程下面这张图是高级语言经过哪些步骤最终才能在机器平台上运行的整体流程图。编译器整体流程前端编译可以简单理解为就是将java文件转换为class字节码文件;后端编译可以理解为clas字节码转换为目标机器平台的机器语言。起始阶段刚开始的字符流原创 2022-02-04 20:17:17 · 1716 阅读 · 1 评论 -
JVM之类加载阶段详解
JVM之类加载阶段详解类加载阶段总览加载获取二进制流将字节流转换为运行时数据结构堆中生成Class对象特殊连接验证准备解析名词解释何时进行解析哪些类型初始化使用卸载类加载阶段总览注意:这些阶段的顺序虽然是确定的,但是这些阶段通常都是互相交叉混合进行的,会在一个阶段中调用,激活另外一个阶段执行加载加载阶段顾名思义,也就是Class文件所代表的的 类/接口 被加载到虚拟机中。那么什么时候(类加载的时机), 谁来加载(哪个类加载器),将哪个Class文件(Class的名称是什么)到虚拟机中呢?1原创 2022-01-29 18:18:46 · 7801 阅读 · 1 评论 -
JVM之Class结构属性表
JVM之Class结构属性表概述属性表属性总览属性结构常见属性CodeExceptionsLineNumberTableLocalVariableTable,LocalVariableTypeTableConstantValueDeprecated及Synthetic属性StackMapTableMethodParameters概述上篇文章提到过在Class结构表中,属性表存在于Class表,字段表和方法表中,是为了描述额外的信息。属性表在《JAVA虚拟机规范》中并没有像其他数据一样做严格的限制,我原创 2022-01-10 22:00:00 · 2009 阅读 · 6 评论 -
JVM之Class结构速记
JVM之Class结构详解Class文件规范Class文件大结构总览magicClass文件版本号Constant_Pool常量池各个表对应的含义反编译代码示例常量池中常量表对应数据结构内容access_flags访问标识class的继承实现关系字段表access_flags访问标识名称索引和描述符的索引存储额外信息方法表access_flags访问标识名称索引和描述符的索引存储额外信息属性表Class文件规范根据《JAVA虚拟机规范》的规定,Class文件格式采用一种类似于C语言结构体的伪结构来存储原创 2022-01-05 23:02:17 · 1479 阅读 · 3 评论 -
JVM之历代垃圾收集器详解
JVM之历代垃圾收集器讲解总览分类并行和并发年轻代垃圾回收器Serial收集器特点优点缺点PartNew收集器特点:Parallel Scavenge收集器特点老年代垃圾回收器Serial Old收集器Parallel Old收集器组合CMS收集器特点工作流程1.初始标记2.并发标记3.重新标记4.并发清除G1 收集器特点实现优点缺点工作流程总结总览分类一,采用分代理念的垃圾回收器:1.年轻代:SerialPartNewParallel Scavenge2.老年代:CMSSerial O原创 2021-12-25 20:10:13 · 1927 阅读 · 6 评论 -
JVM之关于GC的扩展知识
关于GC的扩展知识1.GC Roots遍历提升效率以往做法可优化地方以及优化原理2.提升了GC Roots遍历效率却不知道怎么安插?3.safePoint我又该放到哪里4.如何实现STW?优化5.一个"小Bug":线程如果不执行呢?6. GC Roots会随着运行时间变长而增加吗?基础知识介绍记忆集最常用的精度本章主要是对上一篇文章讲的垃圾回收机制的扩展,垃圾回收其实本身是有很多可以优化的点的,本章就进行对这些优化点进行介绍。1.GC Roots遍历提升效率以往做法当垃圾回收器线程进行GC时,第一原创 2021-12-22 21:34:18 · 1341 阅读 · 13 评论 -
JVM之垃圾回收算法详解
JVM之垃圾回收算法详解现有的垃圾回收算法分类垃圾收集器的设计原则标记-清除算法缺点标记-复制算法“Apple回收策略”缺点标记-整理算法缺点总结现有的垃圾回收算法分类根据如何判定对象是垃圾,垃圾回收算法分为两类:1、引用计数式垃圾收集(判定垃圾是通过引用计数器)别名:直接垃圾收集2、追踪式垃圾收集(判定垃圾是通过GC Roots)别名:间接垃圾收集主流虚拟机采用的是第二种追踪式垃圾收集,所以本文讲解第二种垃圾收集的算法垃圾收集器的设计原则根据两个分代假说:1.绝大部分对象是熬不过第一原创 2021-12-20 23:04:00 · 4445 阅读 · 1 评论 -
JVM之对象创建流程及对象内存布局
JVM之内存区域及对象创建流程对象创建流程分配内存并发解决方法设置初始值在程序中可能会出现的问题设置对象头对象头数据结构Class文件的<.init>对象的内存布局对象创建流程当JAVA虚拟机碰到new字节码指令时,首先会去常量池中查找是否有对应的类名(也就是去查找是否有对应的符号引用),然后去检查这个符号引用代表的类是否已经被加载,解析和初始化过。如果没有会先进行刚才说的类加载过程。当类加载后,虚拟机将会为其分配内存,为其分配的内存大小是可知的,下面的内存布局将会讲解为什么是可知的。分原创 2021-12-19 18:42:29 · 1658 阅读 · 4 评论 -
JVM之认识程序运行本质
JVM之内存结构模型详解JVM是什么汇编语言高级语言虚拟机是什么java代码如何转换成机器识别的代码JVM是什么刚入门的时候老师教我们写代码是这样的:写JAVA文件然后用javac命令编译成class文件运行即可。随着学习的不断拓展和工作中业务代码的积累,对于“为什么会这样”的困惑越来越多,于是写了这篇博客~。计算机能看懂的是二进制,也就是0和1。那么我们的JAVA程序和计算机又有什么关联呢?他们是怎么联系到一起的?汇编语言计算机只能识别0和1,人们发现利用0和1可以做很多事情:比如可原创 2021-12-17 12:38:09 · 1099 阅读 · 4 评论 -
JVM之JVM初探
JVM初探JVM执行文件类装入子系统执行引擎垃圾回收器堆中的内存回收方法区中的内存回收JVM执行文件JVM执行的文件为class文件,这个执行文件是什么意思呢,就是虚拟机能够识别的文件,类加载器加载链接初始化后将数据保存在JVM运行时数据区中的文件。类装入子系统JVM的类加载器为ClassLoader采用双亲委派模型机制进行加载类。双亲委派模型机制:根据父子关系一直往顶层找是否被其他父级parent类加载器加载过,如果找到加载过,返回;如果没有找到,在返回一个一个查找是否有加载的权限,如果原创 2021-12-14 00:05:51 · 2008 阅读 · 5 评论 -
JVM之前世今生实现讲解
JVM之前世今生实现讲解前世今生虚拟机始祖JDK1.0Classic虚拟机JDK1.2Exact VMHotSpot VM(第一)特点天下第二:BEA JRockit/ IBM J9 VMBEA JRockit VM研究方向后续IBM J9 VM研究方向优点后续专有虚拟机VEA Liquid VM简介后续Zing优点前世今生首先放出一张图,这张图是《深入理解JAVA虚拟机》中的配图,本文也是根据这本书进行的记录。虚拟机始祖虚拟机始祖——Classic/Exact VMJDK1.0虚拟机Vir原创 2021-12-09 23:26:03 · 1493 阅读 · 0 评论