跳至主要內容
第一章 Java内存区域与内存溢出异常

对于 C/C++ 程序来说,开发人员需要手动分配和释放内存,如果使用不当,很可能发生内存泄露问题。

得益于 Java 虚拟机自动内存管理机制,Java 程序员不再需要为每一个 new 操作去写配对的 delete/free 代码,不容易出现内存泄漏和内存溢出问题。也正因为 Java 程序员把控制内存的权力交给了 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误、修正问题将会变得非常困难。

JVM 内存区域

Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。


cpgege原创大约 14 分钟笔记JVM
第二章 垃圾收集器与内存分配策略

判断对象是否存活

可达性分析算法

Java 是通过可达性分析算法来判定对象是否存活的。通过一系列称为 GC Roots根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为“引用链”(Reference Chain),如果某个对象到 GC Roots 间没有任何引用链相连,则证明此对象是不可能再被使用的

利用可达性分析算法判定对象是否可回收

cpgege原创大约 16 分钟笔记JVM