通过 jstat -gcutil 来学习JVM 内存分配策略与 GC 发生时机

jstat 是 JVM 统计信息监视工具,如下:

 

我通过 jstat 来监视1192的Java进程统计信息,各项监视参数:

S0、S1 代表两个Survivor区;

E 代表 Eden 区;

O(Old)代表老年代;

P(Permanent)代表永久代;

YGC(Young GC)代表Minor GC;

YGCT代表Minor GC耗时;

FGC(Full GC)代表Full GC耗时;

GCT代表Minor & Full GC共计耗时。

Java 堆分为新生代老年代,新生代一般划分为三块区域,Eden + From Survivor + To Survivor,Eden 和 Survivor 的内存比为8:1,每次只使用一个Eden 和一个 Survivor 区域,另一个 Survivor 用于复制收集算法回收内存。

对象一般尽量分配到新生代中,而对于大对象(长字符串和大数组)直接分配在老年代中,同时“年龄”长的的对象会从新生代自动晋升到老年代中。

Java 方法区称为永久代,只有 HotSpot 虚拟机才存在永久代。

当 Eden 区域分配不足时,自动发生一次 Minor GC

当发生 Minor GC 时,虚拟机会自动检测(比较)新生代晋升到老年代的对象内存大小和老年代剩余内存大小,如果晋升>剩余,则发生一次Full GC;如果晋升<剩余,则去检测老年代的内存担保 HandlePromotionFailure 是否允许担保失败,如果不允许担保失败,则发生一次Full GC,如果允许失败,则进行一次Minor GC。

转载于:https://www.cnblogs.com/orientsun/archive/2012/07/25/2608545.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值