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 } |