[草稿] GC 参数设置的一些疑问 PS + SERIALOLD
kaiyuanjava
2013-11-23
大家好,我在实验FGC时,对如下GC日志有些地方不太理解,请帮忙解释谢谢
首先参数设置如下: -client -Xms=20M -Xmx=20M -Xmn=10M -verbose:gc -XX:+PrintGCDetails -XX:+UseParallelGC 此参数中默认SurvivorRatio为6 第一次FGC是什么原因产生? 为什么要产生,此时old空间明明是够用的,而且是首次也不存在分配担保问题 package com.hx; import java.util.ArrayList; import java.util.List; public class TestGC { public static void main(String[] args)throws Exception{ //Thread.sleep(15000); List list = new ArrayList(); for (int i = 0; i < 10; i++) { list.add(new MemorObject(1024 * 1024)); Thread.sleep(2000); System.out.println(i); } System.gc(); System.gc(); Thread.sleep(5000); list.clear(); for (int i = 0; i < 10 ; i++) { list.add(new MemorObject(1024 * 1024)); if(i % 3 == 0){ list.remove(0); } } System.out.println("list size is " + list.size()); Thread.sleep(5000); } } class MemorObject{ byte [] b ; public MemorObject(int b){ this.b = new byte[b]; } } 0 1 2 3 4 5 6 [GC [PSYoungGen: 7628K->1272K(8960K)] 7628K->7416K(19200K), 0.0039739 secs] [Full GC [PSYoungGen: 1272K->0K(8960K)] [PSOldGen: 6144K->7363K(10240K)] 7416K->7363K(19200K) [PSPermGen: 1765K->1765K(8192K)], 0.0039837 secs] 7 8 9 [Full GC [PSYoungGen: 3153K->1024K(8960K)] [PSOldGen: 7363K->9411K(10240K)] 10516K->10435K(19200K) [PSPermGen: 1770K->1770K(8192K)], 0.0044222 secs] [Full GC [PSYoungGen: 1024K->1024K(8960K)] [PSOldGen: 9411K->9411K(10240K)] 10435K->10435K(19200K) [PSPermGen: 1770K->1770K(8192K)], 0.0037243 secs] [Full GC [PSYoungGen: 7249K->0K(8960K)] [PSOldGen: 9411K->4289K(10240K)] 16661K->4289K(19200K) [PSPermGen: 1770K->1769K(8192K)], 0.0078759 secs] list size is 6 |
|
subchen
2013-11-25
Young Gen: 10M
Eden Space: 6M From Space: 2M To Space: 2M 当分配到 6M 的时候,Eden Space 满了,触发一个 GC,但是由于所有对象都存活,而 From Space/To Space 空间不够,需要放到 Old Gen。所以触发了一个 Full GC。 我觉得这个 Full GC 并不是真的 Full GC,而是发生在 Old Gen 上面的 GC。 而真正的 Full GC 是 Young Gen 和 Old Gen 一起做GC。 |
相关讨论
相关资源推荐
- JVM默认垃圾回收器扫盲,那些说UseParallelGC是 PS + Serial Old 的别再打脸了
- PS+PO调优实战:hotspot参数、调优参数
- 【深入理解JVM】详解GC日志参数配置及日志分析
- GC相关的参数
- 虚拟机中的经典垃圾收集器及常用参数解析(Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1)
- 【JVM】JVM内存结构+JVM参数配置+GC垃圾回收+OOM内存溢出
- fullGC CMS退化为serialGC cmsGC循环发生
- java 程序执行后 强制gc_【GC系列】JVM的常用GC参数及GC日志解析
- java jvm内存管理/gc策略/参数设置
- 浅析经典JVM垃圾收集器-Serial/ParNew/Parallel Scavenge/Serial Old/Parallel Old/CMS/G1