Search in sources :

Example 1 with HotSpotVirtualMachine

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();
}
Also used : InputStream(java.io.InputStream) HotSpotVirtualMachine(sun.tools.attach.HotSpotVirtualMachine) VirtualMachine(com.sun.tools.attach.VirtualMachine) HotSpotVirtualMachine(sun.tools.attach.HotSpotVirtualMachine)

Example 2 with HotSpotVirtualMachine

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);
}
Also used : InputStream(java.io.InputStream) HotSpotVirtualMachine(sun.tools.attach.HotSpotVirtualMachine) VirtualMachine(com.sun.tools.attach.VirtualMachine) HotSpotVirtualMachine(sun.tools.attach.HotSpotVirtualMachine)

Example 3 with HotSpotVirtualMachine

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);
}
Also used : InputStream(java.io.InputStream) HotSpotVirtualMachine(sun.tools.attach.HotSpotVirtualMachine) File(java.io.File) VirtualMachine(com.sun.tools.attach.VirtualMachine) HotSpotVirtualMachine(sun.tools.attach.HotSpotVirtualMachine)

Example 4 with HotSpotVirtualMachine

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);
}
Also used : InputStream(java.io.InputStream) VirtualMachine(com.sun.tools.attach.VirtualMachine) HotSpotVirtualMachine(sun.tools.attach.HotSpotVirtualMachine)

Example 5 with HotSpotVirtualMachine

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();
}
Also used : InputStream(java.io.InputStream) HotSpotVirtualMachine(sun.tools.attach.HotSpotVirtualMachine) AttachNotSupportedException(com.sun.tools.attach.AttachNotSupportedException) AttachNotSupportedException(com.sun.tools.attach.AttachNotSupportedException) IOException(java.io.IOException) VirtualMachine(com.sun.tools.attach.VirtualMachine) HotSpotVirtualMachine(sun.tools.attach.HotSpotVirtualMachine)

Aggregations

VirtualMachine (com.sun.tools.attach.VirtualMachine)5 InputStream (java.io.InputStream)5 HotSpotVirtualMachine (sun.tools.attach.HotSpotVirtualMachine)5 AttachNotSupportedException (com.sun.tools.attach.AttachNotSupportedException)1 File (java.io.File)1 IOException (java.io.IOException)1