JAVA上的多线程

我在 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 有效地管理此内存 ptr。


UYOU
浏览 137回答 2
2回答

胡说叔叔

我得到了正确的答案。Linux 中通过 JAVA 的 dlopen 不默认为 RTLD_LOCAL。我已经明确地通过了相同的。有效。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java