进程和多个jvm

时间:2014-09-04 14:15:05

标签: java c++ java-native-interface

这可能是一个微不足道的问题,我只想确认我对流程和多个jvms的理解。

我创建了一个C ++ dll程序,通过JNI调用我的java jar文件。然后我在其他C ++程序中调用此C ++ DLL。据我所知,在我称之为dll的任何特定程序中,只允许一个jvm。在我的项目中,一个C ++程序在程序的开头和结尾调用一次dll,当第一次调用dll时,dll会创建jvm,并在第二次调用时将一个线程附加到jvm。

我的问题是我将有许多不同的C ++程序调用这个DLL,所以它应该创建多个jvms?这是每个进程创建一个jvm,对吧?或者它们仍被视为线程?

谢谢!

1 个答案:

答案 0 :(得分:5)

调用Java API的C / C ++程序将为每个进程创建一个JVM(当您调用JNI_CreateJavaVM()时)并连接到它。

如果您运行此C / C ++程序的多个实例(进程),那么在这种情况下,为每个实例创建一个JVM。

创建的每个JVM都是一个进程,而不是一个线程。