这可能是一个微不足道的问题,我只是想确认我对进程和多个 jvm 的理解。
我创建了一个 C++ dll 程序,通过 JNI 调用我的 java jar 文件。然后我在其他 C++ 程序中调用这个 C++ dll。据我所知,在我调用 dll 的任何特定程序中,只允许使用一个 jvm。在我的项目中,一个C++程序在程序的开头和结尾调用了一次dll,第一次调用时dll会创建jvm,第二次调用时会附加一个线程给jvm。
我的问题是我会有很多不同的 C++ 程序调用这个 dll,所以它应该创建多个 jvms?这是每个进程一个 jvm 创建,对吗?或者它们仍然被视为线程?
谢谢!
最佳答案
调用 Java API 的 C/C++ 程序将为每个进程创建一个 JVM(当您调用 JNI_CreateJavaVM()
时)并连接到它。
如果您有多个运行此 C/C++ 程序的实例(进程),那么在这种情况下,将为每个实例创建一个 JVM。
创建的每个 JVM 都是一个进程,而不是一个线程。
关于java - 进程和多个jvm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25667778/