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:个人认为是使用的是复制清除算法