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」の部分を参照してください:IBMのVMを計測する前に 1、1、エージェントが存在するかどうかをテストする必要があります。 をつまり、// IBM の行の前にこのチェックを挿入します。if(null == connectorAddress) {(connectorAddress = vm.getSystemProperties()。getProperty( CONNECTOR_ADDRESS)); } 2. JMXConnectorFactoryから取得したコネクタ(JMXConnectorコネクタ...)は、mbeanが不要になったときに閉じる必要があります。この場合、コネクターは、後でconnector.close()を有効にするためにクラス内のメンバーでなければなりません。 –