最近看了一些JVM内存结构,但纸上得来终觉浅,绝知此事要躬行。看别人画的,总归是别人的,所以自己画一个



JVM内存入口位于如下三个位置中



hotspot\src\share\vm\memory\universe.hpp



hotspot\src\share\vm\memory\universe.inline.hpp



hotspot\src\share\vm\memory\universe.cpp



这个入口之后是JVM堆内存的初始化、分配策略、垃圾回收策略、堆的扩大与收缩,年轻代的管理,老年代的管理,永久区的管理。



因此画图展示。










Universe作为内存的核心,创建了垃圾回收策略和堆结构。



而上图中的每一个类,都是比较重要的数据+算法结构。



通过对每个描述对象的加工,完成了堆的申请、初始化、扩展、收缩等操作。



—————



后续会从如下角度来解释这个内存核心:



1、堆是如何创建、映射、扩展、收缩的?



2、堆的种类



3、常用参数对堆种类的影响



4、对象的创建过程



5、对象在堆代中的移动



6、常用垃圾回收策略