Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C+启动时正确关闭JVM+; < >我通过JNI从C++代码启动JVM。我有一个问题,当退出我的C++进程时,似乎没有运行JVM的一些关机钩子,因此一些临时资源仍然在我的周围,在我的特殊情况下,下次打开C++进程时,就阻止启动JVM。 我尝试了jvm->DestroyJavaVM(),但在关闭所有进程窗口后,仍然可以看到进程正在运行。在通过JNI启动JVM时,确保JVM正确关闭的最佳等待时间是什么_Java_C++_Jvm_Java Native Interface_Shutdown Hook - Fatal编程技术网

从C+启动时正确关闭JVM+; < >我通过JNI从C++代码启动JVM。我有一个问题,当退出我的C++进程时,似乎没有运行JVM的一些关机钩子,因此一些临时资源仍然在我的周围,在我的特殊情况下,下次打开C++进程时,就阻止启动JVM。 我尝试了jvm->DestroyJavaVM(),但在关闭所有进程窗口后,仍然可以看到进程正在运行。在通过JNI启动JVM时,确保JVM正确关闭的最佳等待时间是什么

从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

谢谢

最简单的方法是通过JNI调用
System.exit

首先,
jvm->DestroyJavaVM()
在所有非守护进程jvm线程停止之前不会返回,它只会等待它们停止,所以您应该在java中停止它们

其次,
System.exit
将导致整个进程关闭

因此,您真正需要的是检查java代码中哪个线程尚未停止,例如ui框架的后台消息循环线程,如
gwt
swing