Mar*_*ger 5 java linux java-native-interface jvm native
Windows 上已经回答了类似的问题,但我不知道如何在 Linux 上实现相同的目标。
我想加深对JNI的了解。我已经开始使用 JNI 项目JNI_CreateJavaVM,从本机应用程序中创建一个新的 JVM。
但这次我不想在本机应用程序中创建JVM(即不使用JNI_CreateJavaVM),而是附加到已经运行的应用程序(即在AttachCurrentThread通过某种调用在本机应用程序之前启动的 VM 上使用java myApplication)。
Linux 上有没有办法实现这一点?我需要获取JavaVM正在运行的 JVM 的对象。我尝试使用JNI_GetCreatedJavaVMs,但这不会返回任何 JVM(我认为此方法仅返回当前进程创建的虚拟机,例如,通过使用JNI_CreateJavaVM,而不是系统上运行的所有虚拟机)
JNI 函数只能在启动 JVM 的进程中使用。JNI 不允许您控制其他进程。
但是,有一种方法可以使用 HotSpot Dynamic Attach API 在不同 JVM 进程的上下文中加载代码。
Java API可附加到远程 JVM 并在其上下文中加载代理库。但您也可以通过本机代码来完成此操作,就像在我的jattach项目中一样。
| 归档时间: |
|
| 查看次数: |
1742 次 |
| 最近记录: |