java堆内存模型

1. java堆内存划分

分析:

   1.  这是jdk1.8以前的堆内存划分。

   2.   新生代主要有Eden区域,存活区1,存活区2.(主要是刚刚创建的对象)

   3.  老年代(经过jvm垃圾回收之后,对象依然存活)

   4.  永久代(jvm垃圾回收机制不可能进行回收的),jdk1.8以后改为元区域,这个区域的内存时使用电脑的直接内存

   5.  在每一个区域之间都有一个伸缩区。

2. jvm的垃圾回收过程:

分析:

1. jvm垃圾回收主要可以通过自动回收和手动回收

2. 默认情况下使用jvm自动回收

3. 当创建对象时,会去检查Eden区空间是否有空余,如果有空余则创建成功

4. 如果Eden区空间没有多余,则进行MinorGc,如果MinorGc后,会去检查Eden是否有空余,有多余空间,对象创建成功。

5. 如果Eden没有空余,会去检查存活区是否有多余空间,如果有多余空间,会把Eden区部分活跃对象保存到存活区,从而申请对象成功。

6. 如果存活区没有多余空间,会看老年代是否有空间,如果老年代有存活对象,会把存活区部分活跃对象保存到老年代里面,

从而申请对象成功。

7.如果老年代没有空间,则会触发FullGc,如果FullGc失败,那么会抛出OutOfMemory错误。

猜你喜欢

转载自blog.csdn.net/weixin_41629878/article/details/85266923