从 C++ 启动时正确关闭 JVM

Proper shutdown of JVM when launching from C++

我正在通过 JNI 从 C++ 代码启动 JVM。我有一个问题,当我刚刚退出我的 C++ 进程时,似乎 JVM 的一些关闭挂钩不是 运行,因此一些临时资源仍然存在,在我的特定情况下,这会阻止我下次打开 C++ 时启动 JVM过程。 我尝试了 jvm->DestroyJavaVM(),但在我的所有进程 windows 关闭后,我仍然可以看到进程 运行ning。确保 JVM 在通过 JNI 启动时正确关闭的最佳等待时间是多少?

谢谢!

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

首先,jvm->DestroyJavaVM() 不会 return 直到所有非守护程序 jvm 线程都停止,它只会等待它们停止,所以你应该在 java.

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

所以你真正需要的是检查你的java代码哪个线程还没有停止,例如ui框架的后台消息循环线程,比如gwt或者swing.