22 */
23
24 /**
25 * @test TestHumongousShrinkHeap
26 * @bug 8036025 8056043
27 * @requires vm.gc=="G1" | vm.gc=="null"
28 * @summary Verify that heap shrinks after GC in the presence of fragmentation
29 * due to humongous objects
30 * @library /testlibrary
31 * @modules java.management/sun.management
32 * @run main/othervm -XX:-ExplicitGCInvokesConcurrent -XX:MinHeapFreeRatio=10
33 * -XX:MaxHeapFreeRatio=12 -XX:+UseG1GC -XX:G1HeapRegionSize=1M -verbose:gc
34 * TestHumongousShrinkHeap
35 */
36
37 import com.sun.management.HotSpotDiagnosticMXBean;
38 import java.lang.management.ManagementFactory;
39 import java.lang.management.MemoryUsage;
40 import java.util.ArrayList;
41 import java.util.List;
42 import static com.oracle.java.testlibrary.Asserts.*;
43
44 public class TestHumongousShrinkHeap {
45
46 public static final String MIN_FREE_RATIO_FLAG_NAME = "MinHeapFreeRatio";
47 public static final String MAX_FREE_RATIO_FLAG_NAME = "MaxHeapFreeRatio";
48
49 private static final List<List<byte[]>> garbage = new ArrayList();
50 private static final int REGION_SIZE = 1024 * 1024; // 1M
51 private static final int LISTS_COUNT = 10;
52 private static final int HUMON_SIZE = Math.round(.9f * REGION_SIZE);
53 private static final long AVAILABLE_MEMORY
54 = Runtime.getRuntime().freeMemory();
55 private static final int HUMON_COUNT
56 = (int) ((AVAILABLE_MEMORY / HUMON_SIZE)
57 / LISTS_COUNT);
58
59
60 public static void main(String[] args) {
61 System.out.format("Running with %s max heap size. "
62 + "Will allocate humongous object of %s size %d times.%n",
|
22 */
23
24 /**
25 * @test TestHumongousShrinkHeap
26 * @bug 8036025 8056043
27 * @requires vm.gc=="G1" | vm.gc=="null"
28 * @summary Verify that heap shrinks after GC in the presence of fragmentation
29 * due to humongous objects
30 * @library /testlibrary
31 * @modules java.management/sun.management
32 * @run main/othervm -XX:-ExplicitGCInvokesConcurrent -XX:MinHeapFreeRatio=10
33 * -XX:MaxHeapFreeRatio=12 -XX:+UseG1GC -XX:G1HeapRegionSize=1M -verbose:gc
34 * TestHumongousShrinkHeap
35 */
36
37 import com.sun.management.HotSpotDiagnosticMXBean;
38 import java.lang.management.ManagementFactory;
39 import java.lang.management.MemoryUsage;
40 import java.util.ArrayList;
41 import java.util.List;
42 import static jdk.test.lib.Asserts.*;
43
44 public class TestHumongousShrinkHeap {
45
46 public static final String MIN_FREE_RATIO_FLAG_NAME = "MinHeapFreeRatio";
47 public static final String MAX_FREE_RATIO_FLAG_NAME = "MaxHeapFreeRatio";
48
49 private static final List<List<byte[]>> garbage = new ArrayList();
50 private static final int REGION_SIZE = 1024 * 1024; // 1M
51 private static final int LISTS_COUNT = 10;
52 private static final int HUMON_SIZE = Math.round(.9f * REGION_SIZE);
53 private static final long AVAILABLE_MEMORY
54 = Runtime.getRuntime().freeMemory();
55 private static final int HUMON_COUNT
56 = (int) ((AVAILABLE_MEMORY / HUMON_SIZE)
57 / LISTS_COUNT);
58
59
60 public static void main(String[] args) {
61 System.out.format("Running with %s max heap size. "
62 + "Will allocate humongous object of %s size %d times.%n",
|