Mandy,

Thanks, I got it to work using your suggestions.

Keimpe Bronkhorst
Oracle JDeveloper


On 11/4/2015 5:02 PM, Mandy Chung wrote:
On Nov 4, 2015, at 2:32 PM, Keimpe Bronkhorst <[email protected]> 
wrote:

This concerns code we have in Oracle JDeveloper which collect thread dumps of 
all Java Processes on local host. This code uses the non-public JDK classes:
     import sun.jvmstat.monitor.MonitorException;
     import sun.jvmstat.monitor.MonitoredHost;
     import sun.jvmstat.monitor.MonitoredVm;
     import sun.jvmstat.monitor.MonitoredVmUtil;
     import sun.jvmstat.monitor.VmIdentifier;

to identify the Java processes on local host, and

     import com.sun.tools.attach.VirtualMachine;
     import sun.tools.attach.HotSpotVirtualMachine;

to attach to the processes and dump their threads.

The trouble is that these classes are not accessible anymore in JDK9 unless 
-XaddExports: is used.

Does anybody know how to do this functionality using public classes, or are 
there plans to add public classes to replace these non-public classes?

com.sun.tools.attach is supported API that you should use to list the VM 
processes on a local host:
    http://download.java.net/jdk9/docs/jdk/api/attach/spec/index.html

I guess you are calling HotSpotVirtualMachine.remoteDataDump method to get 
thread dump.  Can you use java.lang.management.ThreadMXBean.dumpAllThreads once 
you start a local JMX agent in the attached VM?

Mandy

Reply via email to