36 public static void main(String[] args) throws Exception { 37 String classpath = args[0]; 38 String classlist = args[1]; 39 String archive = args[2]; 40 String heapsize = args[3]; 41 42 // Prepare the classlist 43 FileOutputStream fos = new FileOutputStream(classlist); 44 PrintStream ps = new PrintStream(fos); 45 46 for (int i=4; i<args.length; i++) { 47 ps.println(args[i].replace('.', '/')); 48 } 49 ps.close(); 50 fos.close(); 51 52 // Dump the archive 53 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 54 heapsize, 55 "-XX:+IgnoreUnrecognizedVMOptions", 56 "-XX:+UnlockCommercialFeatures", 57 "-XX:+UseAppCDS", 58 "-XX:+UnlockDiagnosticVMOptions", 59 "-cp", classpath, 60 "-XX:ExtraSharedClassListFile=" + classlist, 61 "-XX:SharedArchiveFile=" + archive, 62 "-Xshare:dump", 63 "-Xlog:gc+heap+coops", 64 "-Xlog:cds"); 65 66 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 67 System.out.println("[stdout = " + output.getStdout() + "]"); 68 System.out.println("[stderr = " + output.getStderr() + "]"); 69 output.shouldContain("Loading classes to share"); 70 output.shouldHaveExitValue(0); 71 } 72 } | 36 public static void main(String[] args) throws Exception { 37 String classpath = args[0]; 38 String classlist = args[1]; 39 String archive = args[2]; 40 String heapsize = args[3]; 41 42 // Prepare the classlist 43 FileOutputStream fos = new FileOutputStream(classlist); 44 PrintStream ps = new PrintStream(fos); 45 46 for (int i=4; i<args.length; i++) { 47 ps.println(args[i].replace('.', '/')); 48 } 49 ps.close(); 50 fos.close(); 51 52 // Dump the archive 53 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( 54 heapsize, 55 "-XX:+IgnoreUnrecognizedVMOptions", 56 "-cp", classpath, 57 "-XX:ExtraSharedClassListFile=" + classlist, 58 "-XX:SharedArchiveFile=" + archive, 59 "-Xshare:dump", 60 "-Xlog:gc+heap+coops", 61 "-Xlog:cds"); 62 63 OutputAnalyzer output = new OutputAnalyzer(pb.start()); 64 System.out.println("[stdout = " + output.getStdout() + "]"); 65 System.out.println("[stderr = " + output.getStderr() + "]"); 66 output.shouldContain("Loading classes to share"); 67 output.shouldHaveExitValue(0); 68 } 69 } |