C++

2015-03-25 12 views
5

'dan başladığında JVM'nin uygun şekilde kapatılması JVM'yi JNI aracılığıyla C++ kodundan başlatıyorum. C++ işlemimi bıraktığımda, JVM'den bazı kapatma kancalarının çalıştırılmadığı ve bu nedenle bazı geçici kaynakların hala etrafta olduğu, benim özel durumumda bir C++ işlemi açtığımda JVM'nin başlatılmasını engelleyen bir sorun var. jvm-> DestroyJavaVM() yöntemini denedim, ancak tüm işlem pencereleri kapatıldıktan sonra işlemin hala devam ettiğini görebiliyordum. JNM'nin JNI aracılığıyla başlatıldığında düzgün şekilde kapatıldığından emin olmak için en iyi bekleme nedir?C++

Teşekkürler!

cevap

1

Her şeyden önce, jvm->DestroyJavaVM(), tüm non-daemon jvm iş parçacıkları durdurulana kadar geri dönmeyecek, durmak için beklemekten başka bir şey yapmaz, bu yüzden onları java'da durdurmalısınız.

İkinci olarak, System.exit, tüm işlemin kapatılmasına neden olur.

Gerçekten ihtiyacınız olan şey, java kodunuzu hangi iş parçacığının henüz durdurulmadığını kontrol etmektir, örneğin, gwt veya swing gibi ui çerçevesinin arka plan ileti döngüsü iş parçacığı.

0

En kolay yol, JNI aracılığıyla System.exit numaralı telefonu aramaktır.