最近在做 Java Agent 的相关开发,在查询相关开源 Java Agent 实现时想起了 Uber 的 jvm-profiler,之前在开发 Spark 相关应用时了解过该 Agent,最近处理 Java Agent 的类隔离又想起了它,于是看了看相关实现,其中 premain
方法的入口如下:
1 | /* |
其中 agentImpl.run
方法的实现见:AgentImpl.java,在入口处没有看见有创建独立的类加载器的相关逻辑,而在 pom.xml 中看到使用 maven-shade-plugin 对类进行了重定位,并未实现物理隔离。
1 | <plugin> |
Reference
JVM Profiler: An Open Source Tool for Tracing Distributed JVM Applications at Scale