我制作了一个简单的库来测量给定对象的大小。图书馆是
通过JNI从Java类访问。它专门为Hotspot设计,因此它使用JVMTI并调用GetObjectSize
。
我的问题是,什么是更好的解决方案?
使用System.load("library")
或
将库设置为代理,并通过发出带有代理选项的java命令显式加载它。
到目前为止,我见过的所有类似例子都使用了代理函数:
以什么方式比仅加载库更有效?
谢谢!
答案 0 :(得分:0)
命令行注入的优点是代理与虚拟机一起加载。您可以将代理注入每个Java程序而无需修改程序。使用System.load
,这在调用时完成。您可以对更大的回调集做出反应,例如有一个VM Initialization Event。如果您使用System.load
该事件已过去。
因此,我不相信使用命令行注入在某种程度上更有效,但对某些用例更有效。