首页 > 编程语言 >Java当中jvm运行时区域新生代、老年代、永久代和Garbage Collection垃圾回收机制【杭州多测师】【杭州多测师_王sir】

Java当中jvm运行时区域新生代、老年代、永久代和Garbage Collection垃圾回收机制【杭州多测师】【杭州多测师_王sir】

时间:2022-10-06 10:00:08浏览次数:57  
标签:sir 多测师 Space Object 新生代 永久 线程 内存 杭州

 

 

 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

相关文章