无法加载代理库:Agent_OnAttach 在 management_agent 中不可用

问题描述 投票:0回答:0

问题1

我正在尝试将 management_agent(libmanagement_agent.so 库)加载到 jvm 中以在运行时设置 gc 编译 vm 参数。 这是我的代码片段

long pid = getProcessId();
VirtualMachine vm = VirtualMachine.attach(Long.toString(pid));
vm = VirtualMachine.attach(Long.toString(pid));
Properties agentProperties = vm.getAgentProperties();

String options = agentProperties.getProperty("sun.jvm.args");               
String connectorAddress = vm.getAgentProperties().getProperty("com.sun.management.jmxremote.localConnectorAddress");
options += " -Xlog:gc*:file=gc.log";
agentProperties.setProperty("sun.jvm.args", options);
            
vm.loadAgentLibrary("management_agent",options);
vm.detach();

我正在尝试加载 manage_agent 库以及更新的 vm 参数集

但是没有加载代理,我得到以下错误

com.sun.tools.attach.AgentLoadException:无法加载代理库:Agent_OnAttach 在 management_agent 中不可用 在 jdk.attach/sun.tools.attach.VirtualMachineImpl.execute(VirtualMachineImpl.java:220) 在 jdk.attach/sun.tools.attach.HotSpotVirtualMachine.loadAgentLibrary(HotSpotVirtualMachine.java:94) 在 jdk.attach/sun.tools.attach.HotSpotVirtualMachine.loadAgentLibrary(HotSpotVirtualMachine.java:119) 在 JdkLogs.main(gclogs.java:48)

根据java官方文档,Agent_OnAttach存在于libmanagement_agent.so中。我的java版本是11.

问题2

我可以通过使用本地管理代理来加载代理

vm.startLocalManagementAgent();

是否有可能将 vm 参数添加到通过这种方式加载的代理中


任何帮助将不胜感激

java java-11 lib .so
© www.soinside.com 2019 - 2024. All rights reserved.