我通过JNI从C ++代码启动JVM。我有一个问题,当刚刚退出我的C ++进程时,似乎没有运行来自JVM的一些关闭挂钩,因此一些临时资源仍然存在,在我的特定情况下,在我下次打开C ++进程时会阻止启动JVM。 我尝试了jvm-> DestroyJavaVM(),但是在我的所有进程窗口关闭之后,我仍然可以看到进程正在运行。当通过JNI启动时,确保JVM正常关闭的最佳等待是什么?
谢谢!
答案 0 :(得分:1)
首先,jvm->DestroyJavaVM()
不会返回,直到所有非守护进程的jvm线程都停止,它只会等待它们停止,所以你应该在java中停止它们。
其次,System.exit
将导致整个过程被关闭。
所以你真正需要的是检查你的java代码还没有停止哪个线程,例如ui框架的后台消息循环线程,例如gwt
或swing
。
答案 1 :(得分:0)
最简单的方法是通过JNI调用System.exit
。