
JVM
文章平均质量分 89
Java虚拟机相关知识
DurkZ
这个作者很懒,什么都没留下…
展开
-
深入理解 HotSpot 垃圾收集算法的细节实现
虽然抢先式中断和主动式中断都要求线程最终在安全点处停下,但抢先式中断由系统直接强制中断线程,而主动式中断则依赖线程主动检测全局中断标志并挂起。由于抢先式中断可能在不安全状态下中断线程,现代 JVM(如 HotSpot)均采用主动式中断。原创 2025-03-27 10:18:45 · 648 阅读 · 0 评论 -
对象的创建
JVM 需要为对象设置「它是哪个类的实例、如何找到类元数据、对象的哈希码、GC 分代年龄、锁标志位」等信息,这些都放在对象头(Object Header)中。:为每个线程预先在堆中分配一小块缓冲区(TLAB),这样每个线程只在自己的 TLAB 中分配对象,只有当 TLAB 用完后才需要同步锁定分配新的缓冲区。上面步骤完成后,从 JVM 角度看,对象已经生成了,但对于 Java 程序来说,构造方法还没执行,字段值只是默认值。若堆中空闲内存是连续的,一边放已使用的内存,一边放空闲的内存,中间是一个分界指针。原创 2025-03-25 15:49:12 · 375 阅读 · 0 评论 -
深入解析 JVM 内存区域及核心概念
程序计数器是一块非常小的内存区域,主要功能是记录当前线程正在执行的字节码指令的地址,相当于程序中的“行号指示器”。每次递归调用都会在 JVM 栈中创建一个新的栈帧,当递归深度超过 JVM 所分配的栈内存时,就会抛出栈溢出错误。这些条目显示了类中存在的各种字面量、符号引用等信息,是 JVM 在加载类时用来解析并建立直接引用的重要依据。:管理方法调用时产生的栈帧,包含局部变量、操作数栈等数据,代码示例展示递归调用导致栈溢出的情形。:本地方法栈专门处理本地代码,而 JVM 栈用于执行 Java 字节码。原创 2025-03-26 17:59:13 · 1857 阅读 · 0 评论 -
深入理解垃圾收集算法:从分代理论到经典回收策略
分代收集理论奠定了现代垃圾收集器的设计基础,通过将堆划分为新生代和老年代,实现了针对不同对象生命周期的“对症下药”。各类垃圾收集算法(标记-清除、标记-复制、标记-整理)各有优缺点,设计者往往需要在停顿时间、内存利用率、吞吐量之间做权衡。未来趋势:随着硬件技术和应用需求的发展,诸如 ZGC、Shenandoah 等新一代垃圾收集器正尝试在全区域收集模式下实现更低延迟和更高吞吐量,这将对传统分代模型提出挑战或改进。原创 2025-03-26 22:33:23 · 1100 阅读 · 0 评论 -
JVM 为什么不使用引用计数算法?——深入解析 GC 策略
在 Java 中,垃圾回收(Garbage Collection, GC)是一个至关重要的功能,它能够自动管理内存,回收不再使用的对象,从而防止内存泄漏。然而,在垃圾回收的实现上,JVM 并未采用引用计数算法(Reference Counting),而是使用了可达性分析算法(Reachability Analysis)。那么,为什么 JVM 选择可达性分析,而不是引用计数?这篇文章将深入探讨引用计数的原理、局限性,以及 JVM 采用可达性分析的原因。引用计数是一种简单且高效的垃圾回收策略,它的核心思想是:每原创 2025-03-26 18:24:59 · 2271 阅读 · 0 评论