< prev index next >

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

Print this page
rev 55538 : 8226757: Shenandoah: Make Traversal a separate mode


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

 128                 "adaptive",
 129                 "compact",
 130                 "static",
 131                 "traversal",
 132                 "aggressive",
 133                 "passive",
 134         };
 135 



 136         for (String h : heuristics) {
 137             // Forceful enabling should work
 138             passWith("-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloading");
 139             passWith("-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloadingWithConcurrentMark");
 140 
 141             // Even when concurrent unloading is disabled, Full GC has to recover
 142             passWith("-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloading", "-XX:-ClassUnloadingWithConcurrentMark");
 143             passWith("-XX:ShenandoahGCHeuristics=" + h, "-XX:+ClassUnloading", "-XX:-ClassUnloadingWithConcurrentMark", "-XX:ShenandoahUnloadClassesFrequency=0");
 144             passWith("-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:ShenandoahGCHeuristics=" + h, "-XX:-ClassUnloading");
 148             failWith("-XX:ShenandoahGCHeuristics=" + h, "-XX:-ClassUnloading", "-XX:+ClassUnloadingWithConcurrentMark");
 149             failWith("-XX:ShenandoahGCHeuristics=" + h, "-XX:-ClassUnloading", "-XX:+ClassUnloadingWithConcurrentMark", "-XX:ShenandoahUnloadClassesFrequency=1");
 150             failWith("-XX:ShenandoahGCHeuristics=" + h, "-XX:-ClassUnloading", "-XX:-ClassUnloadingWithConcurrentMark", "-XX:ShenandoahUnloadClassesFrequency=1");

 151         }
 152     }
 153 }


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