hotspot/test/serviceability/tmtools/jstat/GcCauseTest02.java
changeset 43933 85ee551f3948
parent 42585 570f4b5312af
child 44633 d2f5e8921045
equal deleted inserted replaced
43433:acc1d9072823 43933:85ee551f3948
     1 /*
     1 /*
     2  * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    23 
    23 
    24 /*
    24 /*
    25  * @test
    25  * @test
    26  * @summary Test checks output displayed with jstat -gccause.
    26  * @summary Test checks output displayed with jstat -gccause.
    27  *          Test scenario:
    27  *          Test scenario:
    28  *          tests forces debuggee application eat ~70% of heap and runs jstat.
    28  *          test forces debuggee application eat ~70% of heap and runs jstat.
    29  *          jstat should show that ~70% of heap (OC/OU ~= 70%).
    29  *          jstat should show actual usage of old gen (OC/OU ~= old gen usage).
    30  * @requires vm.opt.ExplicitGCInvokesConcurrent != true
    30  * @requires vm.opt.ExplicitGCInvokesConcurrent != true
    31  * @modules java.base/jdk.internal.misc
    31  * @modules java.base/jdk.internal.misc
    32  * @library /test/lib
    32  * @library /test/lib
    33  * @library ../share
    33  * @library ../share
    34  * @run main/othervm -XX:+UsePerfData -XX:InitialHeapSize=128M -XX:MaxHeapSize=128M -XX:MaxMetaspaceSize=128M GcCauseTest02
    34  * @run main/othervm -XX:+UsePerfData -XX:MaxNewSize=4m -XX:MaxHeapSize=128M -XX:MaxMetaspaceSize=128M GcCauseTest02
    35  */
    35  */
    36 import utils.*;
    36 import utils.*;
    37 
    37 
    38 public class GcCauseTest02 {
    38 public class GcCauseTest02 {
    39 
    39 
    40     private final static float targetMemoryUsagePercent = 0.7f;
       
    41 
       
    42     public static void main(String[] args) throws Exception {
    40     public static void main(String[] args) throws Exception {
    43 
    41         new GarbageProducerTest(new JstatGcCauseTool(ProcessHandle.current().getPid())).run();
    44         // We will be running "jstat -gc" tool
       
    45         JstatGcCauseTool jstatGcTool = new JstatGcCauseTool(ProcessHandle.current().getPid());
       
    46 
       
    47         // Run once and get the  results asserting that they are reasonable
       
    48         JstatGcCauseResults measurement1 = jstatGcTool.measure();
       
    49         measurement1.assertConsistency();
       
    50 
       
    51         GcProvoker gcProvoker = new GcProvoker();
       
    52 
       
    53         // Eat metaspace and heap then run the tool again and get the results  asserting that they are reasonable
       
    54         gcProvoker.allocateAvailableMetaspaceAndHeap(targetMemoryUsagePercent);
       
    55         // Collect garbage. Also update VM statistics
       
    56         System.gc();
       
    57         JstatGcCauseResults measurement2 = jstatGcTool.measure();
       
    58         measurement2.assertConsistency();
       
    59 
       
    60         // Assert that space has been utilized acordingly
       
    61         JstatResults.assertSpaceUtilization(measurement2, targetMemoryUsagePercent);
       
    62     }
    42     }
    63 }
    43 }