< prev index next >

test/gc/shenandoah/oom/TestClassLoaderLeak.java

Print this page
rev 11461 : [backport] 8226757: Shenandoah: Make traversal and passive modes explicit
rev 11463 : Backport Traversal GC


 107             analyzer.shouldContain("All good");
 108         } else {
 109             analyzer.shouldHaveExitValue(1);
 110             analyzer.shouldContain("java.lang.OutOfMemoryError");
 111             analyzer.shouldNotContain("All good");
 112         }
 113     }
 114 
 115     public static void main(String[] args) throws Exception {
 116         if (args.length > 0) {
 117             String classDir = TestClassLoaderLeak.class.getProtectionDomain().getCodeSource().getLocation().getPath();
 118             for (int c = 0; c < COUNT; c++) {
 119                 load(classDir);
 120             }
 121             System.out.println("All good");
 122             return;
 123         }
 124 
 125         String[][][] modeHeuristics = new String[][][] {
 126              {{"normal"},    {"adaptive", "compact", "static", "aggressive"}},

 127              {{"passive"},   {"passive"}}
 128         };
 129 
 130         for (String[][] mh : modeHeuristics) {
 131             String mode = mh[0][0];
 132             String[] heuristics = mh[1];
 133             for (String h : heuristics) {
 134                 // Forceful enabling should work
 135                 passWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloading");
 136                 passWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloadingWithConcurrentMark");
 137 
 138                 // Even when concurrent unloading is disabled, Full GC has to recover
 139                 passWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloading", "-XX:-ClassUnloadingWithConcurrentMark");
 140                 passWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloading", "-XX:-ClassUnloadingWithConcurrentMark", "-XX:ShenandoahUnloadClassesFrequency=0");
 141                 passWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloading", "-XX:+ClassUnloadingWithConcurrentMark", "-XX:ShenandoahUnloadClassesFrequency=0");
 142 
 143                 // Should OOME when unloading forcefully disabled, even if local flags try to enable it back
 144                 failWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:-ClassUnloading");
 145                 failWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:-ClassUnloading", "-XX:+ClassUnloadingWithConcurrentMark");
 146                 failWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:-ClassUnloading", "-XX:+ClassUnloadingWithConcurrentMark", "-XX:ShenandoahUnloadClassesFrequency=1");


 107             analyzer.shouldContain("All good");
 108         } else {
 109             analyzer.shouldHaveExitValue(1);
 110             analyzer.shouldContain("java.lang.OutOfMemoryError");
 111             analyzer.shouldNotContain("All good");
 112         }
 113     }
 114 
 115     public static void main(String[] args) throws Exception {
 116         if (args.length > 0) {
 117             String classDir = TestClassLoaderLeak.class.getProtectionDomain().getCodeSource().getLocation().getPath();
 118             for (int c = 0; c < COUNT; c++) {
 119                 load(classDir);
 120             }
 121             System.out.println("All good");
 122             return;
 123         }
 124 
 125         String[][][] modeHeuristics = new String[][][] {
 126              {{"normal"},    {"adaptive", "compact", "static", "aggressive"}},
 127              {{"traversal"}, {"adaptive", "aggressive"}},
 128              {{"passive"},   {"passive"}}
 129         };
 130 
 131         for (String[][] mh : modeHeuristics) {
 132             String mode = mh[0][0];
 133             String[] heuristics = mh[1];
 134             for (String h : heuristics) {
 135                 // Forceful enabling should work
 136                 passWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloading");
 137                 passWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloadingWithConcurrentMark");
 138 
 139                 // Even when concurrent unloading is disabled, Full GC has to recover
 140                 passWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloading", "-XX:-ClassUnloadingWithConcurrentMark");
 141                 passWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloading", "-XX:-ClassUnloadingWithConcurrentMark", "-XX:ShenandoahUnloadClassesFrequency=0");
 142                 passWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloading", "-XX:+ClassUnloadingWithConcurrentMark", "-XX:ShenandoahUnloadClassesFrequency=0");
 143 
 144                 // Should OOME when unloading forcefully disabled, even if local flags try to enable it back
 145                 failWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:-ClassUnloading");
 146                 failWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:-ClassUnloading", "-XX:+ClassUnloadingWithConcurrentMark");
 147                 failWith("-XX:ShenandoahGCMode=" + mode, "-XX:ShenandoahGCHeuristics=" + h, "-XX:-ClassUnloading", "-XX:+ClassUnloadingWithConcurrentMark", "-XX:ShenandoahUnloadClassesFrequency=1");
< prev index next >