1、本地方法栈和程序计数器 ==》偏底层一般不会接触到
2、方法区 ==》对应为永久代
3、虚拟机栈(stack) ==》对应为栈
4、堆(heap) ==》对应里面有新生代+老年代
stack(栈内存 ) heap(堆内存) 永久代
5、栈内存
1)线程私有
2)生命周期和线程相同
3)主要存放内容
4)基本数据类型(int,char,float,double…)
5)对象的引用,指向了对象在堆内存中起始地址
6)通过-Xss参数配置
6、堆内存示意图
survivor区
新生代 老年代
堆内存 = 年轻代+老年代
年轻代 = Eden+Survivor
Survivor = From Space(s0)+To Space(s1)
7、堆内存
1)堆内存是Jvm中空间最大的区域
2)所有线程共享堆
3)所有的数组以及内存对象的实例都在此区域分配
4)堆内存大小通过参数进行配置
-Xmx:最大堆内存
-Xms:最小堆内存
5)堆内存构成
– 新生代:包括三块区域,eden、from survivor(s0)、to survivor(s1)
– 老年代:old gen
Object o = new Object()
其中,o存放在栈内存中,new Object()存放在堆内存中,变量o是Object对象的引用,o上存放了Object对象占用内存的起始地址
8、永久代
永久代也叫(Method Area)
各线程共享,主方法区要存放类信息、常量、静态变量
如:public static int a = 10
垃圾回收行为比较少见
年轻代 = Eden+Survivor
Survivor = From Space(s0) + To Space(s1)
年轻代 = Eden+From Space+To Space
堆内存 = 年轻代+老年代
堆内存=Eden+From Space+To Space+老年代
9、Java8的新变化
Java8从Jvm中移除了PermGen,使用Metaspace(元空间)来代替永久代
Metaspace不存在Jvm中,而是存在本地内存中配置元空间初始值和最大值参数:
-XX:MetaspaceSize=64m
-XX:MaxMetaspaceSize=64m
10、YoungGC和FullGC的概念(GC指的是垃圾回收 Garbage Collection)
新生代引发的GC叫YoungGC
老年代引发的GC叫FullGC
FullGC会引起整个Jvm的用户线程暂停,待垃圾回收完毕后,才继续运行
标签:sir,多测师,Space,Object,新生代,永久,线程,内存,杭州 From: https://www.cnblogs.com/xiaoshubass/p/16757089.html