2014-09-04 105 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都是一个进程,而不是一个线程。