< prev index next >

test/gc/g1/TestG1TraceEagerReclaimHumongousObjects.java

Print this page




  32  *          java.management
  33  */
  34 
  35 import jdk.test.lib.ProcessTools;
  36 import jdk.test.lib.OutputAnalyzer;
  37 import java.util.LinkedList;
  38 
  39 public class TestG1TraceEagerReclaimHumongousObjects {
  40   public static void main(String[] args) throws Exception {
  41     testGCLogs();
  42     testHumongousObjectGCLogs();
  43   }
  44 
  45   private static void testGCLogs() throws Exception {
  46 
  47     ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC",
  48                                                "-Xms128M",
  49                                                "-Xmx128M",
  50                                                "-Xmn16M",
  51                                                "-XX:G1HeapRegionSize=1M",
  52                                                "-XX:+PrintGC",
  53                                                "-XX:+UnlockExperimentalVMOptions",
  54                                                "-XX:G1LogLevel=finest",
  55                                                "-XX:+G1TraceEagerReclaimHumongousObjects",
  56                                                GCTest.class.getName());
  57 
  58     OutputAnalyzer output = new OutputAnalyzer(pb.start());
  59 
  60     // As G1EagerReclaimHumongousObjects is set(default), below logs should be displayed.
  61     // And GCTest doesn't have humongous objects, so values should be zero.
  62     output.shouldContain("[Humongous Reclaim");
  63     output.shouldContain("[Humongous Total: 0]");
  64     output.shouldContain("[Humongous Candidate: 0]");
  65     output.shouldContain("[Humongous Reclaimed: 0]");
  66 
  67     output.shouldHaveExitValue(0);
  68   }
  69 
  70   private static void testHumongousObjectGCLogs() throws Exception {
  71     ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC",
  72                                                "-Xms128M",
  73                                                "-Xmx128M",
  74                                                "-Xmn16M",
  75                                                "-XX:G1HeapRegionSize=1M",
  76                                                "-XX:+PrintGC",
  77                                                "-XX:+UnlockExperimentalVMOptions",
  78                                                "-XX:G1LogLevel=finest",
  79                                                "-XX:+G1TraceEagerReclaimHumongousObjects",
  80                                                GCWithHumongousObjectTest.class.getName());
  81 
  82     OutputAnalyzer output = new OutputAnalyzer(pb.start());
  83 
  84     // As G1ReclaimDeadHumongousObjectsAtYoungGC is set(default), below logs should be displayed.
  85     output.shouldContain("[Humongous Reclaim");
  86     output.shouldContain("[Humongous Total");
  87     output.shouldContain("[Humongous Candidate");
  88     output.shouldContain("[Humongous Reclaimed");
  89 
  90     // As G1TraceReclaimDeadHumongousObjectsAtYoungGC is set and GCWithHumongousObjectTest has humongous objects,
  91     // these logs should be displayed.
  92     output.shouldContain("Live humongous");
  93     output.shouldContain("Dead humongous region");
  94     output.shouldHaveExitValue(0);
  95   }
  96 
  97   static class GCTest {
  98     private static byte[] garbage;
  99 
 100     public static void main(String [] args) {
 101       System.out.println("Creating garbage");
 102       // create 128MB of garbage. This should result in at least one GC
 103       for (int i = 0; i < 1024; i++) {
 104         garbage = new byte[128 * 1024];
 105       }
 106       System.out.println("Done");
 107     }
 108   }




  32  *          java.management
  33  */
  34 
  35 import jdk.test.lib.ProcessTools;
  36 import jdk.test.lib.OutputAnalyzer;
  37 import java.util.LinkedList;
  38 
  39 public class TestG1TraceEagerReclaimHumongousObjects {
  40   public static void main(String[] args) throws Exception {
  41     testGCLogs();
  42     testHumongousObjectGCLogs();
  43   }
  44 
  45   private static void testGCLogs() throws Exception {
  46 
  47     ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC",
  48                                                "-Xms128M",
  49                                                "-Xmx128M",
  50                                                "-Xmn16M",
  51                                                "-XX:G1HeapRegionSize=1M",
  52                                                "-Xlog:gc+phases=trace",
  53                                                "-XX:+UnlockExperimentalVMOptions",


  54                                                GCTest.class.getName());
  55 
  56     OutputAnalyzer output = new OutputAnalyzer(pb.start());
  57 
  58     // As G1EagerReclaimHumongousObjects is set(default), below logs should be displayed.
  59     // And GCTest doesn't have humongous objects, so values should be zero.
  60     output.shouldContain("Humongous Reclaim");
  61     output.shouldContain("Humongous Total: 0");
  62     output.shouldContain("Humongous Candidate: 0");
  63     output.shouldContain("Humongous Reclaimed: 0");
  64 
  65     output.shouldHaveExitValue(0);
  66   }
  67 
  68   private static void testHumongousObjectGCLogs() throws Exception {
  69     ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC",
  70                                                "-Xms128M",
  71                                                "-Xmx128M",
  72                                                "-Xmn16M",
  73                                                "-XX:G1HeapRegionSize=1M",
  74                                                "-Xlog:gc+phases=trace,gc+humongous=trace",
  75                                                "-XX:+UnlockExperimentalVMOptions",


  76                                                GCWithHumongousObjectTest.class.getName());
  77 
  78     OutputAnalyzer output = new OutputAnalyzer(pb.start());
  79 
  80     // As G1ReclaimDeadHumongousObjectsAtYoungGC is set(default), below logs should be displayed.
  81     output.shouldContain("Humongous Reclaim");
  82     output.shouldContain("Humongous Total");
  83     output.shouldContain("Humongous Candidate");
  84     output.shouldContain("Humongous Reclaimed");
  85 
  86     // As G1TraceReclaimDeadHumongousObjectsAtYoungGC is set and GCWithHumongousObjectTest has humongous objects,
  87     // these logs should be displayed.
  88     output.shouldContain("Live humongous");
  89     output.shouldContain("Dead humongous region");
  90     output.shouldHaveExitValue(0);
  91   }
  92 
  93   static class GCTest {
  94     private static byte[] garbage;
  95 
  96     public static void main(String [] args) {
  97       System.out.println("Creating garbage");
  98       // create 128MB of garbage. This should result in at least one GC
  99       for (int i = 0; i < 1024; i++) {
 100         garbage = new byte[128 * 1024];
 101       }
 102       System.out.println("Done");
 103     }
 104   }


< prev index next >