从C+启动时正确关闭JVM+; < >我通过JNI从C++代码启动JVM。我有一个问题,当退出我的C++进程时,似乎没有运行JVM的一些关机钩子,因此一些临时资源仍然在我的周围,在我的特殊情况下,下次打开C++进程时,就阻止启动JVM。 我尝试了jvm->DestroyJavaVM(),但在关闭所有进程窗口后,仍然可以看到进程正在运行。在通过JNI启动JVM时,确保JVM正确关闭的最佳等待时间是什么
谢谢 最简单的方法是通过JNI调用从C+启动时正确关闭JVM+; < >我通过JNI从C++代码启动JVM。我有一个问题,当退出我的C++进程时,似乎没有运行JVM的一些关机钩子,因此一些临时资源仍然在我的周围,在我的特殊情况下,下次打开C++进程时,就阻止启动JVM。 我尝试了jvm->DestroyJavaVM(),但在关闭所有进程窗口后,仍然可以看到进程正在运行。在通过JNI启动JVM时,确保JVM正确关闭的最佳等待时间是什么,java,c++,jvm,java-native-interface,shutdown-hook,Java,C++,Jvm,Java Native Interface,Shutdown Hook,谢谢 最简单的方法是通过JNI调用System.exit。首先,jvm->DestroyJavaVM()在所有非守护进程jvm线程停止之前不会返回,它只会等待它们停止,所以您应该在java中停止它们 其次,System.exit将导致整个进程关闭 因此,您真正需要的是检查java代码中哪个线程尚未停止,例如ui框架的后台消息循环线程,如gwt或swing
System.exit
。首先,jvm->DestroyJavaVM()
在所有非守护进程jvm线程停止之前不会返回,它只会等待它们停止,所以您应该在java中停止它们
其次,System.exit
将导致整个进程关闭
因此,您真正需要的是检查java代码中哪个线程尚未停止,例如ui框架的后台消息循环线程,如gwt
或swing