< prev index next >

test/hotspot/jtreg/gc/shenandoah/oom/TestClassLoaderLeak.java

Print this page
rev 58672 : Shenandoah: New incremental-update mode


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

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


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