--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/SALauncher.java Sun Mar 13 19:41:11 2016 +0000
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/SALauncher.java Fri Mar 04 18:12:41 2016 +0900
@@ -30,6 +30,7 @@
import sun.jvm.hotspot.tools.JStack;
import sun.jvm.hotspot.tools.JMap;
import sun.jvm.hotspot.tools.JInfo;
+import sun.jvm.hotspot.tools.JSnap;
public class SALauncher {
@@ -39,6 +40,7 @@
System.out.println(" jstack --help\tto get more information");
System.out.println(" jmap --help\tto get more information");
System.out.println(" jinfo --help\tto get more information");
+ System.out.println(" jsnap --help\tto get more information");
return false;
}
@@ -85,6 +87,11 @@
return commonHelp();
}
+ private static boolean jsnapHelp() {
+ System.out.println(" <no option>\tdump performance counters");
+ return commonHelp();
+ }
+
private static boolean toolHelp(String toolName) {
if (toolName.equals("jstack")) {
return jstackHelp();
@@ -95,6 +102,9 @@
if (toolName.equals("jmap")) {
return jmapHelp();
}
+ if (toolName.equals("jsnap")) {
+ return jsnapHelp();
+ }
if (toolName.equals("hsdb") || toolName.equals("clhsdb")) {
return commonHelp();
}
@@ -308,6 +318,40 @@
JInfo.main(newArgs.toArray(new String[newArgs.size()]));
}
+ private static void runJSNAP(String[] oldArgs) {
+ SAGetopt sg = new SAGetopt(oldArgs);
+ String[] longOpts = {"exe=", "core=", "pid="};
+
+ ArrayList<String> newArgs = new ArrayList();
+ String exeORpid = null;
+ String core = null;
+ String s = null;
+
+ while((s = sg.next(null, longOpts)) != null) {
+ if (s.equals("exe")) {
+ exeORpid = sg.getOptarg();
+ continue;
+ }
+ if (s.equals("core")) {
+ core = sg.getOptarg();
+ continue;
+ }
+ if (s.equals("pid")) {
+ exeORpid = sg.getOptarg();
+ continue;
+ }
+ }
+
+ if (exeORpid != null) {
+ newArgs.add(exeORpid);
+ if (core != null) {
+ newArgs.add(core);
+ }
+ }
+
+ JSnap.main(newArgs.toArray(new String[newArgs.size()]));
+ }
+
public static void main(String[] args) {
// Provide a help
if (args.length == 0) {
@@ -355,5 +399,10 @@
runJINFO(oldArgs);
return;
}
+
+ if (args[0].equals("jsnap")) {
+ runJSNAP(oldArgs);
+ return;
+ }
}
}