2014-09-04 31 views
1

這可能是一個微不足道的問題,我只想確認我對進程和多個jvms的理解。進程和多個jvm

我創建了一個C++ dll程序,通過JNI調用我的java jar文件。然後我在其他C++程序中調用這個C++ dll。據我所知,在任何我稱之爲dll的特定程序中,只允許有一個jvm。在我的項目中,C++程序在程序的開始和結束處調用dll一次,並且當第一次調用dll時,dll將創建jvm,並在第二次調用時將線程附加到jvm。

我的問題是我會有很多不同的C++程序調用這個DLL,所以它應該創建多個JVM?這是每個進程的一個jvm創建,對吧?或者他們仍然被視爲線程?

謝謝!

回答

5

調用Java API的C/C++程序將爲每個進程創建一個JVM(當您調用JNI_CreateJavaVM()時)並連接到它。

如果您有幾個正在運行的C/C++程序的實例(進程),那麼在這種情況下,將爲每個實例創建一個JVM。

創建的每個JVM都是一個進程,而不是一個線程。