垃圾回收算法
本文简单介绍
标记--清除算法(Mark-Sweep)
,复制算法(Copying)
,标记--整理算法(Mark-Compact)
,分代收集算法(Generation Collection)
四种垃圾回收算法。
一、标记–清除算法(Mark-Sweep)
二、复制算法(Copying)
新生代中的对象98%都是“朝生夕死” ;所以并不需要按1:1 划分空间,实际上采用的分代。
三 、标记–整理算法(Mark-Compact)
四、分代收集算法(Generation Collection)
根据对象特性,使用分代处理,不同的生命周期使用不同的算法。分而治之。
默认比例 eden:s0 = 8 : 1
; 当Survior
空间不够时,需要依赖其他内存(老年代) 进行分配担保
(Handle Promotion)
后记
方法区(method area)
只是JVM规范中定义的一个概念,用于存储类信息、常量池、静态变量、JIT编译后的代码等数据,具体放在哪里,不同的实现可以放在不同的地方
HotSpot
虚拟机中通常把方法区叫做 永久代
(Permanent Generation)
- 在Java 6中,方法区中包含的数据,除了JIT编译生成的代码存放在
native memory
的CodeCache区域,其他都存放在永久代; - 在Java 7中,Symbol的存储从PermGen移动到了
native memory
,并且把静态变量从instanceKlass末尾(位于PermGen内)移动到了java.lang.Class对象的末尾(位于普通Java heap内); - 在Java 8中,永久代被彻底移除,取而代之的是另一块与堆不相连的
本地内存
——元空间(Metaspace),‑XX:MaxPermSize
参数失去了意义,取而代之的是-XX:MaxMetaspaceSize
。