1

我制作了一个简单的库来测量给定对象的大小。该库是通过 Java 类中的 JNI 访问的。它是专门为 Hotspot 设计的,因此它使用 JVMTI 并调用GetObjectSize.

我的问题是,更好的解决方案是什么?

  1. System.load("library")使用或 加载库

  2. 将库设置为代理并通过发出带有代理选项的 java 命令显式加载它。

到目前为止,我看到的所有类似示例都使用了代理功能:

以什么方式比仅仅加载库更有效?

谢谢!

4

1 回答 1

0

命令行注入的优点是代理与虚拟机一起加载。您可以在不修改程序的情况下将代理注入到每个 Java 程序中。System.load这样就在调用点完成了。您可以对更大的回调集做出反应,例如有一个VM Initialization Event。如果你用System.load那个事件就过去了。

因此,我不认为使用命令行注入在某些方面会更有效,但对于某些用例来说更有效。

于 2013-01-29T12:13:37.920 回答