JVM内存管理&GC

一.JVM内存划分

|--------------------|-------------PC寄存器-------|

|----方法区 ---------|--------------java 虚拟机栈--|         

|----堆区----------- |-------------本地方法栈------|

|----共享区域------- |--------------线程独有-------|

其中左边为共享内存空间,右边为线程独有的线程级别的内存

各个区存储什么?

1.方法区:类的描述,常量等

2.堆:java对象,数组

3.pc寄存器:保存当前线程的执行地址

4.本地方法栈:方法等的局部变量

5.本地方法栈:系统本地方法

二、GC

1.知识准备:标记清除算法和复制清除算法

2.堆区划分

 {(年轻代:Eden区,s0,s1),(老年代:old),(持久代:perm)}

年轻代使用复制清除算法(serial ,parnew ,parallel)

年老代(CMS,serial old,parallel old)

为嘛分s0和s1:个人认为是使用的是复制清除算法

原文地址:https://www.cnblogs.com/hsuchan/p/6055120.html