一、JVM
1.区域划分
JVM在执行java程序时会把它所管理的内存划分为若干个不同的数据区域,这些区域各有各的用途。根据《Java虚拟规范》的规定,Java虚拟机所管理的内存会包含如下几个运行时数据区域。

2.JVM的工作

二、GC(垃圾收集器)
对于程序计数器、虚拟机栈、本地方法栈这三部分区域而言其生命周期与相关线程有关,随线程而生,随线程而灭。并且这三个区域的内存分配与回收具有确定性。 所以GC管理内存,主要管理堆上的内存,并且以对象为单位进行管理。 所以,GC对内存的回收问题就转换为GC回收"死去"的对象的问题。
1. 大部分JVM使用的是——可达性分析法管理内存
(※)GC root:必须存活的对象,且GC root指向的对象一定存活。在JVM中,在某一时刻,栈中存在的局部变量、静态属性、常量池中引用指向的对象称为GC root,GC root还有其他。
2. 引用
Java中引用的定义很传统 : 如果引用类型的数据中存储的数值代表的是另一块内存的起始地址,就
称这块内存代表着一个引用。这种定义有些狭隘,一个对象在这种定义下只有被引用或者没有被引用两种状态。
结合可达性分析法,某些

本文介绍了JVM的内存区域划分,包括程序计数器、虚拟机栈、本地方法栈、堆和方法区。重点讲解了GC(垃圾收集器)如何管理内存,主要通过可达性分析法确定对象是否存活。讨论了三种垃圾回收算法:标记-清除、标记-复制和标记-整理,分析了各自的优缺点。此外,还提及了引用的四种类型以及分代收集策略在新生代和老年代的应用。
最低0.47元/天 解锁文章
586

被折叠的 条评论
为什么被折叠?



