类 jprofiler 是怎么在 jvm 运行时获得 jvm 相关信息的

2020-11-10 11:11:40 +08:00
 linxiaoziruo

Jvm 启动的时候可以通过启动参数加载 agent 相关代码,从而获得 JVM 相关信息。 但是我看到 jprofiler 可以用 attach 的方式,在 jvm 运行的时候获得 Jvm 相关信息。这是怎么实现的,怎么实现这种无侵入式的获得 JVM 相关信息的?

1267 次点击
所在节点    Java
2 条回复
senninha
2020-11-10 12:11:26 +08:00
另起一个普通的 Jvm 进程,获取目标进程的 pid,传入 agent jar 的路径,目标进程就会 load 进定制的 agnet jar 包。
```
VirtualMachine vm = VirtualMachine.attach(pid);
try {
vm.loadAgent(agentPath, agentServerPath);
} finally {
vm.detach();
}
```
fantastM
2020-11-10 14:59:30 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/723518

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX