随笔分类 -  JVM

摘要:1. 根节点枚举 迄今为止,所有收集器在根节点枚举这一步骤时都是必须暂停用户线程的。 现在可达性分析算法耗时最长的查找引用链的过程已经可以做到与用户线程一起并发。 但根节点枚举始终还是必须在一个能保障一致性的快照中才得以进行。 目前主流Java虚拟机使用的都是准确式垃圾收集,虚拟机应当是有办法直接得 阅读全文
posted @ 2022-04-14 22:49 YangDanMua 阅读(231) 评论(0) 推荐(0)
摘要:1. 分代收集理论 当前商业VM的垃圾收集器大多遵循了分代收集 Generational Collection理论进行设计,该理论基于一下分代假说。 弱分代假说 Weak Generational Hypothesis:绝大多数对象都是朝生夕灭的 强分代假说 Strong Generational 阅读全文
posted @ 2022-04-14 22:13 YangDanMua 阅读(47) 评论(0) 推荐(0)
摘要:1. 概述 垃圾收集器 Garbage Collection。 垃圾收集器需要完成的三件事 哪些内存需要回收 什么时候回收 如何回收 只有Java堆和方法区需要考虑内存回收,程序计数器、虚拟机栈、本地方法栈的内存分配和回收都具有确定性。 2. 如何判断对象已死 1. 引用计数法 Reference 阅读全文
posted @ 2022-04-14 21:50 YangDanMua 阅读(40) 评论(0) 推荐(0)
摘要:1. HotSpot 虚拟机对象 如何创建、如何布局、如何访问。 2. 对象创建 Class加载 --> 内存分配 --> 内存初始化 --> 对象初始化. 2. 类加载 当VM遇到字节码 new 指令,检查这个指令的参数在常量池能否定位到一个类的符号引用,并检查这个符号引用代表的类是否已被加载、解 阅读全文
posted @ 2022-04-13 22:17 YangDanMua 阅读(95) 评论(0) 推荐(0)
摘要:1. 运行时数据区域 注意JVM运行时数据区域与Java内存模型的区别 JVM 运行时数据区域:JVM 所管理的内存划分 Java内存模型:屏蔽底层硬件和操作系统的区别,在语言级抽象java的内存访问,使得在不同的环境中java一致的内存访问效果 2. 程序计数器 Program Counter R 阅读全文
posted @ 2022-04-13 21:32 YangDanMua 阅读(63) 评论(0) 推荐(0)
摘要:对象创建 仅限于普通Java对象,不包括数组和Class对象;不包括复制(克隆?)、反序列化。 类加载检查:遇到字节码new指令,检查指令参数能否在常量池定位到一个类的符号引用,并检查这个符号引用对应的类是否已被加载、解析和初始化过,如果没有则执行对应的类加载过程 分配内存:对象所需内存大小在类加载 阅读全文
posted @ 2022-02-13 23:23 YangDanMua 阅读(362) 评论(0) 推荐(0)
摘要:Java虚拟机在执行Java程序时会将其管理的内存分为若干区域。 程序计数器 Program Counter Register 当前线程所执行的字节码的行号指示器。类似寄存器PC,在JVM的概念模型中,就是通过改变这个计数器的值来选取下一条字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处 阅读全文
posted @ 2022-02-13 22:24 YangDanMua 阅读(54) 评论(0) 推荐(0)
摘要:原文:三色标记法与读写屏障 - 简书 (jianshu.com) 《深入理解JVM》3.4.6 1. 概述 可达性算法 引用计数法、可达性分析算法。 引用计数法:实现简单、效率高,难以解决循环引用问题 本文仅是垃圾收集算法的标记过程 2. 三色标记法 2.1 基本算法 要找出存活对象,根据可达性分析 阅读全文
posted @ 2021-11-19 20:39 YangDanMua 阅读(496) 评论(0) 推荐(0)
摘要:简介 CMS:Concurrent Mark Sweep,以获取最短停顿时间为目标的垃圾回收期。看其全名就知道使用了标记-清除算法,老年代垃圾回收器。除了CMS,其他都不单独针对老年代进行GC GC步骤 初始标记,STW,标记 GC Roots 能直接关联到的对象,很快 并发标记,从 GC Root 阅读全文
posted @ 2021-11-19 17:46 YangDanMua 阅读(321) 评论(0) 推荐(0)