【发布时间】:2018-09-12 14:34:57
【问题描述】:
我在 JVM 多线程环境中遇到内存崩溃。在每个线程运行环境中,我正在加载 C++ 共享库的一个实例。 (比如 exm1.so、exm2.so 等)。
首先让我告诉你,C++ 共享库不是线程安全的。因此,我们正在使用 C++ 共享库的实例加载由 JVM 创建的每个线程。 Java 代码:
import com.sun.jna.Native;
Thread 1:
run{
x libraryInstance = Native.loadLibrary(exm1.so, x.class);
x. mymethod();
}
Thread 2:
run{
x libraryInstance = Native.loadLibrary(exm2.so, x.class);
x. mymethod();
}
我的问题是这个 .so 文件将存储在哪个内存中,JVM 是否以线程安全的方式管理每个线程内存?
在每个 .so 文件中都有 C++ malloc 函数调用。 JVM 有效地管理这个内存指针。
【问题讨论】:
标签: java linux multithreading jna