29 * @modules java.base/sun.misc 30 * java.management 31 */ 32 33 import jdk.test.lib.*; 34 35 public class TestHumongousAllocInitialMark { 36 // Heap sizes < 224 MB are increased to 224 MB if vm_page_size == 64K to 37 // fulfill alignment constraints. 38 private static final int heapSize = 224; // MB 39 private static final int heapRegionSize = 1; // MB 40 private static final int initiatingHeapOccupancyPercent = 50; // % 41 42 public static void main(String[] args) throws Exception { 43 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 44 "-XX:+UseG1GC", 45 "-Xms" + heapSize + "m", 46 "-Xmx" + heapSize + "m", 47 "-XX:G1HeapRegionSize=" + heapRegionSize + "m", 48 "-XX:InitiatingHeapOccupancyPercent=" + initiatingHeapOccupancyPercent, 49 "-XX:+PrintGC", 50 HumongousObjectAllocator.class.getName()); 51 52 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 53 output.shouldContain("GC pause (G1 Humongous Allocation) (young) (initial-mark)"); 54 output.shouldNotContain("Full GC"); 55 output.shouldHaveExitValue(0); 56 } 57 58 static class HumongousObjectAllocator { 59 private static byte[] dummy; 60 61 public static void main(String [] args) throws Exception { 62 // Make object size 75% of region size 63 final int humongousObjectSize = 64 (int)(heapRegionSize * 1024 * 1024 * 0.75); 65 66 // Number of objects to allocate to go above IHOP 67 final int humongousObjectAllocations = 68 (int)((heapSize * initiatingHeapOccupancyPercent / 100.0) / heapRegionSize) + 1; 69 70 // Allocate 71 for (int i = 1; i <= humongousObjectAllocations; i++) { 72 System.out.println("Allocating humongous object " + i + "/" + humongousObjectAllocations + 73 " of size " + humongousObjectSize + " bytes"); | 29 * @modules java.base/sun.misc 30 * java.management 31 */ 32 33 import jdk.test.lib.*; 34 35 public class TestHumongousAllocInitialMark { 36 // Heap sizes < 224 MB are increased to 224 MB if vm_page_size == 64K to 37 // fulfill alignment constraints. 38 private static final int heapSize = 224; // MB 39 private static final int heapRegionSize = 1; // MB 40 private static final int initiatingHeapOccupancyPercent = 50; // % 41 42 public static void main(String[] args) throws Exception { 43 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 44 "-XX:+UseG1GC", 45 "-Xms" + heapSize + "m", 46 "-Xmx" + heapSize + "m", 47 "-XX:G1HeapRegionSize=" + heapRegionSize + "m", 48 "-XX:InitiatingHeapOccupancyPercent=" + initiatingHeapOccupancyPercent, 49 "-Xlog:gc", 50 HumongousObjectAllocator.class.getName()); 51 52 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 53 output.shouldContain("Pause Initial Mark (G1 Humongous Allocation)"); 54 output.shouldNotContain("Full GC"); 55 output.shouldHaveExitValue(0); 56 } 57 58 static class HumongousObjectAllocator { 59 private static byte[] dummy; 60 61 public static void main(String [] args) throws Exception { 62 // Make object size 75% of region size 63 final int humongousObjectSize = 64 (int)(heapRegionSize * 1024 * 1024 * 0.75); 65 66 // Number of objects to allocate to go above IHOP 67 final int humongousObjectAllocations = 68 (int)((heapSize * initiatingHeapOccupancyPercent / 100.0) / heapRegionSize) + 1; 69 70 // Allocate 71 for (int i = 1; i <= humongousObjectAllocations; i++) { 72 System.out.println("Allocating humongous object " + i + "/" + humongousObjectAllocations + 73 " of size " + humongousObjectSize + " bytes"); |