1
使用Java Attach API連接到IBM J9VM的正確方法是什麼?使用Attach API連接到J9VM
我想以下(與具有JDK在我的類路徑中的tools.jar):
private static final J9AttachProvider ATTACH_PROVIDER = new J9AttachProvider();
...snip...
String pid = getPIDofRunningVM();
Constructor<J9VirtualMachine> constructor = J9VirtualMachine.class.getConstructor(new Class[]{AttachProvider.class, String.class
});
constructor.setAccessible(true);
J9VirtualMachine virtualMachine = constructor.newInstance(new Object[]{ATTACH_PROVIDER, pid});
我也試過這樣做,而無需使用反射,但我不斷收到
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:44)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:516)
at de.test.Test.gogo(Test.java:34)
at de.teset.Test.main(Test.java:26)
Caused by: java.lang.IllegalAccessError
at ibm.tools.attach.J9VirtualMachine.<init>(J9VirtualMachine.java:24)
... 6 more
有沒有人知道這樣做的正確方法是什麼?
的「// IBM」部分逃脫到代碼的bug夫婦的: 1.插裝IBM VM之前,必須測試劑的存在: (插入地址= vm.getSystemProperties()。getProperty( CONNECTOR_ADDRESS));如果(空==連接器地址) } 2.當不再需要mbean時,必須關閉從JMXConnectorFactory檢索到的連接器(JMXConnector連接器...)。所以在這種情況下,連接器應該是該類中的成員,以便稍後啓用connector.close()。 – 2012-11-22 17:28:56