use of sun.tools.attach.HotSpotVirtualMachine in project jdk8u_jdk by JetBrains.
the class JCmd method executeCommandForPid.
private static void executeCommandForPid(String pid, String command) throws AttachNotSupportedException, IOException, UnsupportedEncodingException {
VirtualMachine vm = VirtualMachine.attach(pid);
// Cast to HotSpotVirtualMachine as this is an
// implementation specific method.
HotSpotVirtualMachine hvm = (HotSpotVirtualMachine) vm;
String[] lines = command.split("\\n");
for (String line : lines) {
if (line.trim().equals("stop")) {
break;
}
try (InputStream in = hvm.executeJCmd(line)) {
// read to EOF and just print output
byte[] b = new byte[256];
int n;
boolean messagePrinted = false;
do {
n = in.read(b);
if (n > 0) {
String s = new String(b, 0, n, "UTF-8");
System.out.print(s);
messagePrinted = true;
}
} while (n > 0);
if (!messagePrinted) {
System.out.println("Command executed successfully");
}
}
}
vm.detach();
}
use of sun.tools.attach.HotSpotVirtualMachine in project jdk8u_jdk by JetBrains.
the class JMap method histo.
private static void histo(String pid, boolean live) throws IOException {
VirtualMachine vm = attach(pid);
InputStream in = ((HotSpotVirtualMachine) vm).heapHisto(live ? LIVE_OBJECTS_OPTION : ALL_OBJECTS_OPTION);
drain(vm, in);
}
use of sun.tools.attach.HotSpotVirtualMachine in project jdk8u_jdk by JetBrains.
the class JMap method dump.
private static void dump(String pid, String options) throws IOException {
// parse the options to get the dump filename
String filename = parseDumpOptions(options);
if (filename == null) {
// invalid options or no filename
usage(1);
}
// get the canonical path - important to avoid just passing
// a "heap.bin" and having the dump created in the target VM
// working directory rather than the directory where jmap
// is executed.
filename = new File(filename).getCanonicalPath();
// dump live objects only or not
boolean live = isDumpLiveObjects(options);
VirtualMachine vm = attach(pid);
System.out.println("Dumping heap to " + filename + " ...");
InputStream in = ((HotSpotVirtualMachine) vm).dumpHeap((Object) filename, (live ? LIVE_OBJECTS_OPTION : ALL_OBJECTS_OPTION));
drain(vm, in);
}
use of sun.tools.attach.HotSpotVirtualMachine in project jdk8u_jdk by JetBrains.
the class JInfo method flag.
private static void flag(String pid, String option) throws IOException {
VirtualMachine vm = attach(pid);
String flag;
InputStream in;
int index = option.indexOf('=');
if (index != -1) {
flag = option.substring(0, index);
String value = option.substring(index + 1);
in = ((HotSpotVirtualMachine) vm).setFlag(flag, value);
} else {
char c = option.charAt(0);
switch(c) {
case '+':
flag = option.substring(1);
in = ((HotSpotVirtualMachine) vm).setFlag(flag, "1");
break;
case '-':
flag = option.substring(1);
in = ((HotSpotVirtualMachine) vm).setFlag(flag, "0");
break;
default:
flag = option;
in = ((HotSpotVirtualMachine) vm).printFlag(flag);
break;
}
}
drain(vm, in);
}
use of sun.tools.attach.HotSpotVirtualMachine in project jdk8u_jdk by JetBrains.
the class JStack method runThreadDump.
// Attach to pid and perform a thread dump
private static void runThreadDump(String pid, String[] args) throws Exception {
VirtualMachine vm = null;
try {
vm = VirtualMachine.attach(pid);
} catch (Exception x) {
String msg = x.getMessage();
if (msg != null) {
System.err.println(pid + ": " + msg);
} else {
x.printStackTrace();
}
if ((x instanceof AttachNotSupportedException) && (loadSAClass() != null)) {
System.err.println("The -F option can be used when the target " + "process is not responding");
}
System.exit(1);
}
// Cast to HotSpotVirtualMachine as this is implementation specific
// method.
InputStream in = ((HotSpotVirtualMachine) vm).remoteDataDump((Object[]) args);
// read to EOF and just print output
byte[] b = new byte[256];
int n;
do {
n = in.read(b);
if (n > 0) {
String s = new String(b, 0, n, "UTF-8");
System.out.print(s);
}
} while (n > 0);
in.close();
vm.detach();
}
Aggregations