JVM
文章平均质量分 95
JVM学习之旅
码农的进阶之路
三人行,必有我师。学海无涯
展开
-
Java虚拟机之类加载子系统
文章目录类加载机制类加载器双亲委派模型破坏双亲委派模型类加载过程加载连接验证准备解析初始化打破双亲委派机制 类加载机制 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制 这一步骤,对应于上图中黄色标注的类加载子系统。它就是负责将Class文件从外部加载进来,加载进来的类信息被存放在方法区 而类加载子系统是通过类加载器 去完成这一操作的 类加载器 从Java虚拟机的角度来看,只存在两种不同的类加载器:一种原创 2022-01-24 17:30:11 · 976 阅读 · 0 评论 -
图文详解Java对象内存布局
文章目录对象内存布局对象头(Header)Mark WordClass Pointer(类型指针)数组长度实例数据(Instance Data)对齐填充(Padding)JOL工具包分析对象内存布局问题: 如果一个空对象,内存大小是多少呢? 先抛出一个问题:一个空对象内存大小是多少?看完这篇文章或许会有收获 对象内存布局 对象头(Header) 对象头包含Mark Word、类型指针和数组长度。 Mark Word Mark Word:用于存储程序运行时的标志位,如锁状态、GC分代年龄和哈希码等。在6原创 2020-12-17 22:26:04 · 407 阅读 · 1 评论 -
JVM垃圾收集方法
标记-清除算法 算法分为标记和清除两个阶段,首先标记处所有需要回收的对象,在标记完成后统一回收所有被标记的对象。 它的主要不足: 1、效率问题,标记和清除两个过程的效率都不高 2、空间问题 标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后再程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前出发另一次垃圾收集动作。 回收前状态: 回收后状态: 复制算法 为了解...原创 2020-03-14 17:50:13 · 129 阅读 · 0 评论 -
JVM垃圾标记方法
引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的 问题:该算法很难解决对象之间相互循环引用的问题 a=b b=a 可达性分析算法 若一系列称为GC Roots的对象的起始点到达对象之间不存在通路,或不可达,则判断该对象是可回收的对象 若对象在进行可达性分析后发现没有与GC Roots相连接的...原创 2020-03-14 17:15:56 · 508 阅读 · 0 评论 -
JVM常用参数名词解释
基于JDK1.8 新生代GC(Minor GC) 指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快 Major GC 清理老年代 Full GC 清理整个堆空间 包括年轻代和老年代 -Xms 初始堆内存大小,默认是物理内存的1/64,等价于-XX:InitialHeapSize -Xmx 最大堆内存大小,默认是物理内存的...原创 2020-03-14 17:04:59 · 256 阅读 · 0 评论 -
JVM内存模型简介
我们常用的HotSpot虚拟机内存模型结构如下,下面会介绍每一部分是干什么的。 程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,小到可以忽略不计。它可以看做是当前线程所执行 的字节码的行号指示器。它是线程私有的 它的特性可简述为记录当前线程的执行进度。因为在多线程情况下 由于线程抢夺 cpu资源等因素,为了线程切换后能恢复到正确的执行位原创 2017-11-19 14:04:21 · 285 阅读 · 0 评论