分析并行GC日志

测试环境:

jdk1.8win10,4核8线程,16G内存

演示代码:程序在1秒内生成许多对象,每个对象随机放在数组里。有的位置就会被重置,就会存在未被使用的对象,等待被回收。

import java.util.Random;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.LongAdder;
/*
演示GC日志生成与解读
*/
public class GCLogAnalysis {
    private static Random random = new Random();
    public static void main(String[] args) {
        // 当前毫秒时间戳
        long startMillis = System.currentTimeMillis();
        // 持续运行毫秒数; 可根据需要进行修改
        long timeoutMillis = TimeUnit.SECONDS.toMillis(1);
        // 结束时间戳
        long endMillis = startMillis + timeoutMillis;
        LongAdder counter = new LongAdder();
        System.out.println("正在执行...");
        // 缓存一部分对象; 进入老年代
        int cacheSize = 2000;
        Object[] cachedGarbage = new Object[cacheSize];
        // 在此时间范围内,持续循环
        while (System.currentTimeMillis() < endMillis) {
            // 生成垃圾对象
            Object garbage = generateGarbage(100*1024);
            counter.increment();
            int randomIndex = random.nextInt(2 * cacheSize);
            if (randomIndex < cacheSize) {
                cachedGarbage[randomIndex] = garbage;
            }
        }
        System.out.println("执行结束!共生成对象次数:" + counter.longValue());
    }

    // 生成对象
    private static Object generateGarbage(int max) {
        int randomSize = random.nextInt(max);
        int type = randomSize % 4;
        Object result = null;
        switch (type) {
            case 0:
                result = new int[randomSize];
                break;
            case 1:
                result = new byte[randomSize];
                break;
            case 2:
                result = new double[randomSize];
                break;
            default:
                StringBuilder builder = new StringBuilder();
                String randomString = "randomString-Anything";
                while (builder.length() < randomSize) {
                    builder.append(randomString);
                    builder.append(max);
                    builder.append(randomSize);
                }
                result = builder.toString();
                break;
        }
        return result;
    }
}

编译代码:

javac GCLogAnalysis.java

并行GC在年轻代使用标记复制算法,在老年代使用标记整理算法。在标记-复制两阶段都是多线程进行,当然标记-整理也是多线程的,通过并行执行,使得GC时间大幅减少。都会发生STW(Stop The World),暂停应用线程。

注意,在GC中,并行是指多个线程回收垃圾,会暂停应用线程。并发是指多个线程在运行,垃圾回收线程和应用线程都在运行,虽然应用线程不会停,但是吞吐量会降低,毕竟还有线程在进行垃圾回收。

案例一(-Xms128m -Xmx128m):

D:\>java -XX:+UseParallelGC -Xms128m -Xmx128m -XX:+PrintGCDetails GCLogAnalysis
正在执行...
[GC (Allocation Failure) [PSYoungGen: 33280K->5109K(38400K)] 33280K->11237K(125952K), 0.0030870 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [PSYoungGen: 38346K->5119K(38400K)] 44474K->21608K(125952K), 0.0040586 secs] [Times: user=0.08 sys=0.05, real=0.00 secs]
[GC (Allocation Failure) [PSYoungGen: 37961K->5117K(38400K)] 54450K->32135K(125952K), 0.0078671 secs] [Times: user=0.06 sys=0.06, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 38386K->5117K(38400K)] 65404K->44151K(125952K), 0.0050800 secs] [Times: user=0.02 sys=0.11, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 38270K->5113K(38400K)] 77304K->53162K(125952K), 0.0038326 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [PSYoungGen: 38272K->5116K(19968K)] 86320K->65316K(107520K), 0.0082089 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 19964K->8785K(29184K)] 80164K->70577K(116736K), 0.0105870 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 23633K->13349K(29184K)] 85425K->76527K(116736K), 0.0104451 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 28197K->14335K(29184K)] 91375K->81375K(116736K), 0.0039869 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [PSYoungGen: 29124K->10760K(29184K)] 96164K->87524K(116736K), 0.0102316 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 10760K->0K(29184K)] [ParOldGen: 76764K->81031K(87552K)] 87524K->81031K(116736K), [Metaspace: 2613K->2613K(1056768K)], 0.0168154 secs] [Times: user=0.09 sys=0.03, real=0.02 secs]
[Full GC (Ergonomics) [PSYoungGen: 14534K->0K(29184K)] [ParOldGen: 81031K->85009K(87552K)] 95565K->85009K(116736K), [Metaspace: 2613K->2613K(1056768K)], 0.0263039 secs] [Times: user=0.13 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 14712K->1718K(29184K)] [ParOldGen: 85009K->87349K(87552K)] 99721K->89068K(116736K), [Metaspace: 2613K->2613K(1056768K)], 0.0173111 secs] [Times: user=0.09 sys=0.00, real=0.02 secs]
[Full GC (Ergonomics) [PSYoungGen: 14783K->5983K(29184K)] [ParOldGen: 87349K->87288K(87552K)] 102133K->93272K(116736K), [Metaspace: 2613K->2613K(1056768K)], 0.0280437 secs] [Times: user=0.02 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 14516K->6872K(29184K)] [ParOldGen: 87288K->87546K(87552K)] 101805K->94418K(116736K), [Metaspace: 2613K->2613K(1056768K)], 0.0174636 secs] [Times: user=0.13 sys=0.00, real=0.02 secs]
[Full GC (Ergonomics) [PSYoungGen: 14573K->9748K(29184K)] [ParOldGen: 87546K->87142K(87552K)] 102119K->96890K(116736K), [Metaspace: 2613K->2613K(1056768K)], 0.0272944 secs] [Times: user=0.02 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 14343K->10837K(29184K)] [ParOldGen: 87142K->87142K(87552K)] 101485K->97980K(116736K), [Metaspace: 2613K->2613K(1056768K)], 0.0035359 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (Ergonomics) [PSYoungGen: 14703K->11598K(29184K)] [ParOldGen: 87142K->87163K(87552K)] 101846K->98762K(116736K), [Metaspace: 2613K->2613K(1056768K)], 0.0271543 secs] [Times: user=0.00 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 14848K->12267K(29184K)] [ParOldGen: 87163K->87394K(87552K)] 102011K->99662K(116736K), [Metaspace: 2613K->2613K(1056768K)], 0.0177002 secs] [Times: user=0.13 sys=0.00, real=0.02 secs]
[Full GC (Ergonomics) [PSYoungGen: 14557K->14327K(29184K)] [ParOldGen: 87394K->87394K(87552K)] 101951K->101721K(116736K), [Metaspace: 2613K->2613K(1056768K)], 0.0026622 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (Allocation Failure) [PSYoungGen: 14327K->14327K(29184K)] [ParOldGen: 87394K->87375K(87552K)] 101721K->101702K(116736K), [Metaspace: 2613K->2613K(1056768K)], 0.0280559 secs] [Times: user=0.05 sys=0.00, real=0.03 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at GCLogAnalysis.generateGarbage(GCLogAnalysis.java:48)
        at GCLogAnalysis.main(GCLogAnalysis.java:25)
Heap
 PSYoungGen      total 29184K, used 14714K [0x00000000fd580000, 0x0000000100000000, 0x0000000100000000)
  eden space 14848K, 99% used [0x00000000fd580000,0x00000000fe3deb98,0x00000000fe400000)
  from space 14336K, 0% used [0x00000000ff200000,0x00000000ff200000,0x0000000100000000)
  to   space 14336K, 0% used [0x00000000fe400000,0x00000000fe400000,0x00000000ff200000)
 ParOldGen       total 87552K, used 87375K [0x00000000f8000000, 0x00000000fd580000, 0x00000000fd580000)
  object space 87552K, 99% used [0x00000000f8000000,0x00000000fd553c40,0x00000000fd580000)
 Metaspace       used 2643K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 291K, capacity 386K, committed 512K, reserved 1048576K

解释一下在并行GC中出现的新字段:

  • Full GC (Ergonomics):发生了Full GCErgonomics 表示JVM内部环境认为此时可以进行一次垃圾收集,跟自适应策略有关。
  • PSYoungGen:在并行GC中年轻代垃圾收集器的名称,基于标记-复制算法。
  • ParOldGen:在并行GC中老年代垃圾收集器的名称,基于标记-整理算法。

案例二(-Xms256m -Xmx256m):

D:\>java -XX:+UseParallelGC -Xms256m -Xmx256m -XX:+PrintGCDetails GCLogAnalysis
正在执行...
[GC (Allocation Failure) [PSYoungGen: 65441K->10743K(76288K)] 65441K->21908K(251392K), 0.0042099 secs] [Times: user=0.02 sys=0.11, real=0.00 secs]
[GC (Allocation Failure) [PSYoungGen: 76279K->10741K(76288K)] 87444K->46042K(251392K), 0.0057952 secs] [Times: user=0.03 sys=0.09, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 76277K->10741K(76288K)] 111578K->66492K(251392K), 0.0047743 secs] [Times: user=0.00 sys=0.13, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 76277K->10735K(76288K)] 132028K->89989K(251392K), 0.0062961 secs] [Times: user=0.05 sys=0.08, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 76166K->10734K(76288K)] 155421K->115377K(251392K), 0.0069691 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 76025K->10743K(40448K)] 180668K->133494K(215552K), 0.0066121 secs] [Times: user=0.11 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 40183K->19486K(58368K)] 162934K->145211K(233472K), 0.0060221 secs] [Times: user=0.09 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 49182K->26881K(58368K)] 174907K->155946K(233472K), 0.0064958 secs] [Times: user=0.06 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 56115K->28641K(58368K)] 185180K->165714K(233472K), 0.0088630 secs] [Times: user=0.13 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 58336K->19261K(58368K)] 195410K->173749K(233472K), 0.0082225 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 19261K->0K(58368K)] [ParOldGen: 154487K->144596K(175104K)] 173749K->144596K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0269706 secs] [Times: user=0.23 sys=0.00, real=0.03 secs]
[GC (Allocation Failure) [PSYoungGen: 29094K->11567K(58368K)] 173690K->156163K(233472K), 0.0019648 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (Ergonomics) [PSYoungGen: 11567K->0K(58368K)] [ParOldGen: 144596K->149992K(175104K)] 156163K->149992K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0212319 secs] [Times: user=0.23 sys=0.00, real=0.02 secs]
[Full GC (Ergonomics) [PSYoungGen: 29696K->0K(58368K)] [ParOldGen: 149992K->156901K(175104K)] 179688K->156901K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0293449 secs] [Times: user=0.05 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29557K->0K(58368K)] [ParOldGen: 156901K->161730K(175104K)] 186458K->161730K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0256476 secs] [Times: user=0.25 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29609K->0K(58368K)] [ParOldGen: 161730K->170498K(175104K)] 191340K->170498K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0276210 secs] [Times: user=0.14 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29696K->1821K(58368K)] [ParOldGen: 170498K->175078K(175104K)] 200194K->176900K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0281361 secs] [Times: user=0.23 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29692K->4883K(58368K)] [ParOldGen: 175078K->175098K(175104K)] 204770K->179981K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0317907 secs] [Times: user=0.17 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29012K->10227K(58368K)] [ParOldGen: 175098K->174502K(175104K)] 204111K->184730K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0284026 secs] [Times: user=0.23 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29241K->11608K(58368K)] [ParOldGen: 174502K->175056K(175104K)] 203744K->186664K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0284774 secs] [Times: user=0.25 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29696K->13624K(58368K)] [ParOldGen: 175056K->174930K(175104K)] 204752K->188554K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0296458 secs] [Times: user=0.14 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29526K->14875K(58368K)] [ParOldGen: 174930K->174965K(175104K)] 204456K->189841K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0280204 secs] [Times: user=0.23 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29645K->17531K(58368K)] [ParOldGen: 174965K->174973K(175104K)] 204610K->192504K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0277078 secs] [Times: user=0.25 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29630K->18149K(58368K)] [ParOldGen: 174973K->174772K(175104K)] 204604K->192922K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0275498 secs] [Times: user=0.11 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29678K->19992K(58368K)] [ParOldGen: 174772K->175047K(175104K)] 204450K->195039K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0304312 secs] [Times: user=0.14 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29567K->21300K(58368K)] [ParOldGen: 175047K->174667K(175104K)] 204614K->195967K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0301034 secs] [Times: user=0.14 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29640K->21898K(58368K)] [ParOldGen: 174667K->174815K(175104K)] 204307K->196714K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0286860 secs] [Times: user=0.14 sys=0.03, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29575K->22677K(58368K)] [ParOldGen: 174815K->175035K(175104K)] 204391K->197712K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0221680 secs] [Times: user=0.13 sys=0.00, real=0.02 secs]
[Full GC (Ergonomics) [PSYoungGen: 29656K->24915K(58368K)] [ParOldGen: 175035K->174719K(175104K)] 204691K->199634K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0197388 secs] [Times: user=0.25 sys=0.00, real=0.02 secs]
[Full GC (Ergonomics) [PSYoungGen: 29592K->26290K(58368K)] [ParOldGen: 174719K->174838K(175104K)] 204312K->201129K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0327591 secs] [Times: user=0.20 sys=0.02, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29663K->26271K(58368K)] [ParOldGen: 174838K->174912K(175104K)] 204501K->201183K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0297178 secs] [Times: user=0.11 sys=0.01, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29498K->26723K(58368K)] [ParOldGen: 174912K->174287K(175104K)] 204410K->201011K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0320086 secs] [Times: user=0.19 sys=0.03, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29612K->26948K(58368K)] [ParOldGen: 174287K->174283K(175104K)] 203899K->201232K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0092342 secs] [Times: user=0.00 sys=0.02, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 29565K->25802K(58368K)] [ParOldGen: 174283K->175043K(175104K)] 203848K->200846K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0283700 secs] [Times: user=0.13 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29696K->26983K(58368K)] [ParOldGen: 175043K->174675K(175104K)] 204739K->201658K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0245573 secs] [Times: user=0.11 sys=0.02, real=0.02 secs]
[Full GC (Ergonomics) [PSYoungGen: 29571K->28323K(58368K)] [ParOldGen: 174675K->174579K(175104K)] 204246K->202902K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0325271 secs] [Times: user=0.16 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29503K->28533K(58368K)] [ParOldGen: 174579K->174332K(175104K)] 204083K->202866K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0140971 secs] [Times: user=0.13 sys=0.00, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 29640K->28546K(58368K)] [ParOldGen: 174332K->174332K(175104K)] 203972K->202879K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0178825 secs] [Times: user=0.00 sys=0.00, real=0.02 secs]
[Full GC (Ergonomics) [PSYoungGen: 29439K->28546K(58368K)] [ParOldGen: 174332K->174332K(175104K)] 203772K->202879K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0026563 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (Ergonomics) [PSYoungGen: 29588K->28913K(58368K)] [ParOldGen: 174332K->174165K(175104K)] 203921K->203079K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0339140 secs] [Times: user=0.20 sys=0.00, real=0.03 secs]
[Full GC (Ergonomics) [PSYoungGen: 29510K->29355K(58368K)] [ParOldGen: 174165K->174165K(175104K)] 203675K->203521K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0022547 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (Ergonomics) [PSYoungGen: 29666K->29499K(58368K)] [ParOldGen: 174165K->174165K(175104K)] 203832K->203665K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0027836 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (Ergonomics) [PSYoungGen: 29649K->29211K(58368K)] [ParOldGen: 174165K->174165K(175104K)] 203814K->203377K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0021382 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (Ergonomics) [PSYoungGen: 29593K->29576K(58368K)] [ParOldGen: 174165K->174165K(175104K)] 203758K->203741K(233472K), [Metaspace: 2613K->2613K(1056768K)], 0.0031293 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
执行结束!共生成对象次数:3272
Heap
 PSYoungGen      total 58368K, used 29696K [0x00000000fab00000, 0x0000000100000000, 0x0000000100000000)
  eden space 29696K, 100% used [0x00000000fab00000,0x00000000fc800000,0x00000000fc800000)
  from space 28672K, 0% used [0x00000000fc800000,0x00000000fc800000,0x00000000fe400000)
  to   space 28672K, 0% used [0x00000000fe400000,0x00000000fe400000,0x0000000100000000)
 ParOldGen       total 175104K, used 174303K [0x00000000f0000000, 0x00000000fab00000, 0x00000000fab00000)
  object space 175104K, 99% used [0x00000000f0000000,0x00000000faa37f08,0x00000000fab00000)
 Metaspace       used 2619K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 288K, capacity 386K, committed 512K, reserved 1048576K

案例三(-Xms512m -Xmx512m):

D:\>java -XX:+UseParallelGC -Xms512m -Xmx512m -XX:+PrintGCDetails GCLogAnalysis
正在执行...
[GC (Allocation Failure) [PSYoungGen: 131584K->21503K(153088K)] 131584K->39172K(502784K), 0.0061464 secs] [Times: user=0.06 sys=0.06, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 153087K->21488K(153088K)] 170756K->77014K(502784K), 0.0100151 secs] [Times: user=0.06 sys=0.06, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 152700K->21496K(153088K)] 208226K->117804K(502784K), 0.0116775 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 153061K->21495K(153088K)] 249369K->158455K(502784K), 0.0131004 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 153079K->21488K(153088K)] 290039K->190385K(502784K), 0.0113370 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 153072K->21492K(80384K)] 321969K->234460K(430080K), 0.0120406 secs] [Times: user=0.13 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 80372K->32846K(116736K)] 293340K->249207K(466432K), 0.0053407 secs] [Times: user=0.13 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 91726K->42372K(116736K)] 308087K->264024K(466432K), 0.0091360 secs] [Times: user=0.13 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 101166K->48854K(116736K)] 322818K->279866K(466432K), 0.0080609 secs] [Times: user=0.11 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 107734K->36980K(116736K)] 338746K->296938K(466432K), 0.0145134 secs] [Times: user=0.06 sys=0.01, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 95643K->19432K(116736K)] 355601K->314773K(466432K), 0.0103900 secs] [Times: user=0.11 sys=0.02, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 19432K->0K(116736K)] [ParOldGen: 295341K->224092K(349696K)] 314773K->224092K(466432K), [Metaspace: 2613K->2613K(1056768K)], 0.0391948 secs] [Times: user=0.34 sys=0.00, real=0.04 secs]
[GC (Allocation Failure) [PSYoungGen: 58880K->20825K(116736K)] 282972K->244917K(466432K), 0.0041559 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [PSYoungGen: 79505K->17773K(116736K)] 303597K->260302K(466432K), 0.0059196 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 76650K->20633K(116736K)] 319179K->279999K(466432K), 0.0062660 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 79285K->19894K(116736K)] 338651K->298263K(466432K), 0.0080933 secs] [Times: user=0.13 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 78774K->19236K(116736K)] 357143K->316177K(466432K), 0.0066268 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 78116K->23382K(116736K)] 375057K->338245K(466432K), 0.0076312 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 23382K->0K(116736K)] [ParOldGen: 314862K->271748K(349696K)] 338245K->271748K(466432K), [Metaspace: 2613K->2613K(1056768K)], 0.0449878 secs] [Times: user=0.25 sys=0.00, real=0.04 secs]
[GC (Allocation Failure) [PSYoungGen: 58880K->21027K(116736K)] 330628K->292776K(466432K), 0.0041675 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [PSYoungGen: 79857K->22136K(116736K)] 351606K->314736K(466432K), 0.0099708 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 81016K->22429K(116736K)] 373616K->335004K(466432K), 0.0073628 secs] [Times: user=0.11 sys=0.00, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 22429K->0K(116736K)] [ParOldGen: 312574K->287830K(349696K)] 335004K->287830K(466432K), [Metaspace: 2613K->2613K(1056768K)], 0.0462200 secs] [Times: user=0.31 sys=0.00, real=0.05 secs]
[GC (Allocation Failure) [PSYoungGen: 58880K->22723K(116736K)] 346710K->310553K(466432K), 0.0062886 secs] [Times: user=0.11 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 81603K->17888K(116736K)] 369433K->326769K(466432K), 0.0060658 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 76732K->15944K(116736K)] 385613K->341804K(466432K), 0.0069494 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 15944K->0K(116736K)] [ParOldGen: 325860K->295821K(349696K)] 341804K->295821K(466432K), [Metaspace: 2613K->2613K(1056768K)], 0.0480018 secs] [Times: user=0.30 sys=0.00, real=0.05 secs]
[GC (Allocation Failure) [PSYoungGen: 58847K->19654K(116736K)] 354668K->315475K(466432K), 0.0039456 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [PSYoungGen: 77761K->22472K(116736K)] 373582K->337327K(466432K), 0.0108535 secs] [Times: user=0.11 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 81179K->19667K(117248K)] 396033K->355351K(466944K), 0.0055507 secs] [Times: user=0.13 sys=0.00, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 19667K->0K(117248K)] [ParOldGen: 335683K->304518K(349696K)] 355351K->304518K(466944K), [Metaspace: 2613K->2613K(1056768K)], 0.0565955 secs] [Times: user=0.31 sys=0.00, real=0.06 secs]
[GC (Allocation Failure) [PSYoungGen: 59392K->21675K(116736K)] 363910K->326194K(466432K), 0.0042472 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [PSYoungGen: 81067K->43401K(114176K)] 385586K->347919K(463872K), 0.0063399 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 102281K->37549K(116736K)] 406799K->362843K(466432K), 0.0082708 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 37549K->0K(116736K)] [ParOldGen: 325293K->317024K(349696K)] 362843K->317024K(466432K), [Metaspace: 2613K->2613K(1056768K)], 0.0494176 secs] [Times: user=0.31 sys=0.00, real=0.05 secs]
[GC (Allocation Failure) [PSYoungGen: 58880K->17492K(116736K)] 375904K->334516K(466432K), 0.0038027 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [PSYoungGen: 76372K->22892K(116736K)] 393396K->356087K(466432K), 0.0083967 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 22892K->0K(116736K)] [ParOldGen: 333194K->321413K(349696K)] 356087K->321413K(466432K), [Metaspace: 2613K->2613K(1056768K)], 0.0493008 secs] [Times: user=0.34 sys=0.00, real=0.05 secs]
执行结束!共生成对象次数:8486
Heap
 PSYoungGen      total 116736K, used 2824K [0x00000000f5580000, 0x0000000100000000, 0x0000000100000000)
  eden space 58880K, 4% used [0x00000000f5580000,0x00000000f58422c8,0x00000000f8f00000)
  from space 57856K, 0% used [0x00000000f8f00000,0x00000000f8f00000,0x00000000fc780000)
  to   space 55808K, 0% used [0x00000000fc980000,0x00000000fc980000,0x0000000100000000)
 ParOldGen       total 349696K, used 321413K [0x00000000e0000000, 0x00000000f5580000, 0x00000000f5580000)
  object space 349696K, 91% used [0x00000000e0000000,0x00000000f39e17a0,0x00000000f5580000)
 Metaspace       used 2619K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 288K, capacity 386K, committed 512K, reserved 1048576K

案例四(-Xms1g -Xmx1g):

D:\>java -XX:+UseParallelGC -Xms1g -Xmx1g -XX:+PrintGCDetails GCLogAnalysis
正在执行...
[GC (Allocation Failure) [PSYoungGen: 262144K->43510K(305664K)] 262144K->82873K(1005056K), 0.0119412 secs] [Times: user=0.08 sys=0.05, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 305600K->43509K(305664K)] 344962K->151935K(1005056K), 0.0156697 secs] [Times: user=0.03 sys=0.09, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 305653K->43516K(305664K)] 414079K->224392K(1005056K), 0.0157361 secs] [Times: user=0.13 sys=0.00, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 305660K->43514K(305664K)] 486536K->297936K(1005056K), 0.0164835 secs] [Times: user=0.13 sys=0.00, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 305658K->43508K(305664K)] 560080K->372536K(1005056K), 0.0166230 secs] [Times: user=0.05 sys=0.08, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 305652K->43518K(160256K)] 634680K->446334K(859648K), 0.0156291 secs] [Times: user=0.11 sys=0.01, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 160254K->75629K(232960K)] 563070K->485042K(932352K), 0.0117534 secs] [Times: user=0.13 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 192365K->100988K(232960K)] 601778K->522363K(932352K), 0.0177530 secs] [Times: user=0.13 sys=0.00, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 217724K->110540K(232960K)] 639099K->546155K(932352K), 0.0202855 secs] [Times: user=0.23 sys=0.00, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 227018K->70508K(232960K)] 662632K->572975K(932352K), 0.0219127 secs] [Times: user=0.11 sys=0.02, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 187244K->43508K(232960K)] 689711K->608044K(932352K), 0.0163429 secs] [Times: user=0.08 sys=0.05, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 160244K->40833K(232960K)] 724780K->642082K(932352K), 0.0129736 secs] [Times: user=0.13 sys=0.00, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 40833K->0K(232960K)] [ParOldGen: 601248K->325303K(699392K)] 642082K->325303K(932352K), [Metaspace: 2613K->2613K(1056768K)], 0.0549556 secs] [Times: user=0.27 sys=0.02, real=0.06 secs]
[GC (Allocation Failure) [PSYoungGen: 115955K->41962K(232960K)] 441259K->367266K(932352K), 0.0076559 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 158470K->40407K(232960K)] 483774K->403682K(932352K), 0.0123208 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 157143K->38134K(232960K)] 520418K->438227K(932352K), 0.0118936 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 154870K->39924K(232960K)] 554963K->473136K(932352K), 0.0108162 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 156660K->41292K(232960K)] 589872K->510728K(932352K), 0.0119215 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 158028K->34535K(232960K)] 627464K->540590K(932352K), 0.0121683 secs] [Times: user=0.13 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 150947K->40575K(232960K)] 657002K->577390K(932352K), 0.0117252 secs] [Times: user=0.08 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 157011K->40757K(232960K)] 693825K->613291K(932352K), 0.0107136 secs] [Times: user=0.11 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 157493K->38660K(232960K)] 730027K->648864K(932352K), 0.0125106 secs] [Times: user=0.11 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 155390K->33810K(232960K)] 765594K->678897K(932352K), 0.0122271 secs] [Times: user=0.09 sys=0.00, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 33810K->0K(232960K)] [ParOldGen: 645086K->348602K(699392K)] 678897K->348602K(932352K), [Metaspace: 2613K->2613K(1056768K)], 0.0577264 secs] [Times: user=0.28 sys=0.00, real=0.06 secs]
执行结束!共生成对象次数:13011
Heap
 PSYoungGen      total 232960K, used 4872K [0x00000000eab00000, 0x0000000100000000, 0x0000000100000000)
  eden space 116736K, 4% used [0x00000000eab00000,0x00000000eafc2260,0x00000000f1d00000)
  from space 116224K, 0% used [0x00000000f8e80000,0x00000000f8e80000,0x0000000100000000)
  to   space 116224K, 0% used [0x00000000f1d00000,0x00000000f1d00000,0x00000000f8e80000)
 ParOldGen       total 699392K, used 348602K [0x00000000c0000000, 0x00000000eab00000, 0x00000000eab00000)
  object space 699392K, 49% used [0x00000000c0000000,0x00000000d546e908,0x00000000eab00000)
 Metaspace       used 2619K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 288K, capacity 386K, committed 512K, reserved 1048576K

案例五(-Xms2g -Xmx2g):

D:\>java -XX:+UseParallelGC -Xms2g -Xmx2g -XX:+PrintGCDetails GCLogAnalysis
正在执行...
[GC (Allocation Failure) [PSYoungGen: 524800K->87030K(611840K)] 524800K->153362K(2010112K), 0.0204466 secs] [Times: user=0.05 sys=0.08, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 611830K->87035K(611840K)] 678162K->265024K(2010112K), 0.0271677 secs] [Times: user=0.11 sys=0.14, real=0.03 secs]
[GC (Allocation Failure) [PSYoungGen: 611835K->87037K(611840K)] 789824K->382617K(2010112K), 0.0265658 secs] [Times: user=0.14 sys=0.09, real=0.03 secs]
[GC (Allocation Failure) [PSYoungGen: 611837K->87026K(611840K)] 907417K->492456K(2010112K), 0.0236040 secs] [Times: user=0.16 sys=0.08, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 611826K->87035K(611840K)] 1017256K->606482K(2010112K), 0.0242055 secs] [Times: user=0.13 sys=0.00, real=0.03 secs]
[GC (Allocation Failure) [PSYoungGen: 611835K->87039K(320000K)] 1131282K->732329K(1718272K), 0.0257001 secs] [Times: user=0.03 sys=0.09, real=0.03 secs]
[GC (Allocation Failure) [PSYoungGen: 319999K->140132K(465920K)] 965289K->791175K(1864192K), 0.0181605 secs] [Times: user=0.13 sys=0.00, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 373092K->175787K(465920K)] 1024135K->837839K(1864192K), 0.0233739 secs] [Times: user=0.08 sys=0.00, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 408725K->185487K(465920K)] 1070777K->879593K(1864192K), 0.0287795 secs] [Times: user=0.20 sys=0.05, real=0.03 secs]
[GC (Allocation Failure) [PSYoungGen: 418447K->137373K(463872K)] 1112553K->920658K(1862144K), 0.0280563 secs] [Times: user=0.19 sys=0.03, real=0.03 secs]
[GC (Allocation Failure) [PSYoungGen: 370333K->65864K(465920K)] 1153618K->964411K(1864192K), 0.0248873 secs] [Times: user=0.14 sys=0.11, real=0.03 secs]
[GC (Allocation Failure) [PSYoungGen: 298824K->75228K(465920K)] 1197371K->1025960K(1864192K), 0.0164258 secs] [Times: user=0.08 sys=0.03, real=0.02 secs]
执行结束!共生成对象次数:17354
Heap
 PSYoungGen      total 465920K, used 145342K [0x00000000d5580000, 0x0000000100000000, 0x0000000100000000)
  eden space 232960K, 30% used [0x00000000d5580000,0x00000000d99f8ac0,0x00000000e3900000)
  from space 232960K, 32% used [0x00000000f1c80000,0x00000000f65f7010,0x0000000100000000)
  to   space 232960K, 0% used [0x00000000e3900000,0x00000000e3900000,0x00000000f1c80000)
 ParOldGen       total 1398272K, used 950732K [0x0000000080000000, 0x00000000d5580000, 0x00000000d5580000)
  object space 1398272K, 67% used [0x0000000080000000,0x00000000ba073090,0x00000000d5580000)
 Metaspace       used 2619K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 288K, capacity 386K, committed 512K, reserved 1048576K

案例六(-Xms4g -Xmx4g):

D:\>java -XX:+UseParallelGC -Xms4g -Xmx4g -XX:+PrintGCDetails GCLogAnalysis
正在执行...
[GC (Allocation Failure) [PSYoungGen: 1048576K->174587K(1223168K)] 1048576K->240576K(4019712K), 0.0290771 secs] [Times: user=0.08 sys=0.17, real=0.03 secs]
[GC (Allocation Failure) [PSYoungGen: 1223163K->174582K(1223168K)] 1289152K->363371K(4019712K), 0.0364123 secs] [Times: user=0.09 sys=0.14, real=0.04 secs]
[GC (Allocation Failure) [PSYoungGen: 1223158K->174582K(1223168K)] 1411947K->491245K(4019712K), 0.0361420 secs] [Times: user=0.13 sys=0.11, real=0.04 secs]
[GC (Allocation Failure) [PSYoungGen: 1223158K->174586K(1223168K)] 1539821K->616600K(4019712K), 0.0364896 secs] [Times: user=0.30 sys=0.05, real=0.04 secs]
[GC (Allocation Failure) [PSYoungGen: 1223162K->174585K(1223168K)] 1665176K->756732K(4019712K), 0.0373964 secs] [Times: user=0.20 sys=0.05, real=0.04 secs]
执行结束!共生成对象次数:19822
Heap
 PSYoungGen      total 1223168K, used 216748K [0x000000076ab00000, 0x00000007c0000000, 0x00000007c0000000)
  eden space 1048576K, 4% used [0x000000076ab00000,0x000000076d42ccd8,0x00000007aab00000)
  from space 174592K, 99% used [0x00000007aab00000,0x00000007b557e670,0x00000007b5580000)
  to   space 174592K, 0% used [0x00000007b5580000,0x00000007b5580000,0x00000007c0000000)
 ParOldGen       total 2796544K, used 582147K [0x00000006c0000000, 0x000000076ab00000, 0x000000076ab00000)
  object space 2796544K, 20% used [0x00000006c0000000,0x00000006e3880c50,0x000000076ab00000)
 Metaspace       used 2619K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 288K, capacity 386K, committed 512K, reserved 1048576K

案例七(-Xms512m -Xmx4g):

D:\>java -XX:+UseParallelGC -Xms512m -Xmx4g -XX:+PrintGCDetails GCLogAnalysis
正在执行...
[GC (Allocation Failure) [PSYoungGen: 131584K->21497K(153088K)] 131584K->42243K(502784K), 0.0078582 secs] [Times: user=0.06 sys=0.06, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 153081K->21495K(284672K)] 173827K->90015K(634368K), 0.0117936 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 284663K->21499K(284672K)] 353183K->161569K(634368K), 0.0136564 secs] [Times: user=0.08 sys=0.05, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 284667K->21502K(547840K)] 424737K->230617K(897536K), 0.0136918 secs] [Times: user=0.03 sys=0.08, real=0.01 secs]
[GC (Allocation Failure) [PSYoungGen: 547838K->21501K(547840K)] 756953K->371437K(898560K), 0.0239670 secs] [Times: user=0.11 sys=0.14, real=0.02 secs]
[Full GC (Ergonomics) [PSYoungGen: 21501K->0K(547840K)] [ParOldGen: 349936K->264810K(586240K)] 371437K->264810K(1134080K), [Metaspace: 2613K->2613K(1056768K)], 0.0490146 secs] [Times: user=0.27 sys=0.01, real=0.05 secs]
[GC (Allocation Failure) [PSYoungGen: 526336K->147463K(1014784K)] 791146K->412273K(1601024K), 0.0185975 secs] [Times: user=0.00 sys=0.13, real=0.02 secs]
[GC (Allocation Failure) [PSYoungGen: 1014279K->186869K(1181184K)] 1279089K->548291K(1767424K), 0.0335555 secs] [Times: user=0.14 sys=0.11, real=0.03 secs]
[GC (Allocation Failure) [PSYoungGen: 1181173K->216574K(970240K)] 1542595K->653601K(1556480K), 0.0357316 secs] [Times: user=0.19 sys=0.05, real=0.04 secs]
[GC (Allocation Failure) [PSYoungGen: 970238K->311403K(1065472K)] 1407265K->757655K(1651712K), 0.0375460 secs] [Times: user=0.23 sys=0.00, real=0.04 secs]
[Full GC (Ergonomics) [PSYoungGen: 311403K->0K(1065472K)] [ParOldGen: 446251K->381695K(753664K)] 757655K->381695K(1819136K), [Metaspace: 2613K->2613K(1056768K)], 0.0606180 secs] [Times: user=0.41 sys=0.00, real=0.06 secs]
执行结束!共生成对象次数:16808
Heap
 PSYoungGen      total 1065472K, used 30819K [0x000000076ab00000, 0x00000007c0000000, 0x00000007c0000000)
  eden space 753664K, 4% used [0x000000076ab00000,0x000000076c918f98,0x0000000798b00000)
  from space 311808K, 0% used [0x0000000798b00000,0x0000000798b00000,0x00000007abb80000)
  to   space 332288K, 0% used [0x00000007abb80000,0x00000007abb80000,0x00000007c0000000)
 ParOldGen       total 753664K, used 381695K [0x00000006c0000000, 0x00000006ee000000, 0x000000076ab00000)
  object space 753664K, 50% used [0x00000006c0000000,0x00000006d74bfc18,0x00000006ee000000)
 Metaspace       used 2619K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 288K, capacity 386K, committed 512K, reserved 1048576K

小结:并行GC可以利用多核CPU的优势,使用多个线程进行垃圾回收。相比于串行GC,在相同配置下,生成的对象更多,GC耗时更小,整体效率更高。