Java虚拟机内存分配策略

1.JVM内存分配分区

Java的内存简单分为堆内存和非堆内存
其中堆内存又可以分为新生代和老年代
新生代分为1个Eden区和2个Survivor区,如下图:
这里写图片描述

2.JVM垃圾回收种类

分为2种,MinorGC和FullGC.
MinorGC针对新生代的内存回收,时间较短,经常发生。
FullGC针对老年代的回收,通常伴随MinorGC,耗费时间较久,较少发生。

3.JVM内存分配策略

(1)先在Eden区分配,如果不够分配的话,发生MinorGC。
(2)进行MinorGC时,会把Eden中有在使用的对象放到其中一个Survivor中。如果Survivor中放不下,则会进入老年代。
(3)每次进行MinorGC时,在Survivor中存活的对象会增加1岁,默认超过15岁的对象(MaxTenuringThreshold),会进入老年代。
(4)JVM的参数有一个叫PretenureSizeThreshold,大小超过这个值的对象会直接进入老年代。

4.垃圾回收器种类

Serial/Serial Old

(1)适合单个CPU
(2)Serial采用复制算法,适合新生代
(3)Serial Old采用标记-整理算法,适合老年代

ParNew

(1)多线程,并行

Parallel Scavenge

(1)适合新生代,并行
(2)适合后台运算的任务,追求的是吞吐量,支持参数自适应

Parallel Old

(1)适合老年代,与Parallel Scavenge搭配使用

CMS(Consurrent Mark Sweep)

(1)追求短停顿,采用标记-清除算法
(2)无法处理浮动垃圾
(3)要求CPU较多

G1

(1)并行+并发
(2)分代采用不同算法进行收集
(3)标记整理+复制算法
(4)可预测停顿时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值