Я получаю сбой памяти в многопоточной среде JVM.В каждой среде выполнения потока я загружаю экземпляр разделяемой библиотеки C ++.(Скажите exm1.so, exm2.so и т. Д.).
Позвольте мне сначала сказать, что разделяемая библиотека C ++ не является поточно-ориентированной.Таким образом, мы загружаем каждый поток, созданный JVM, с экземпляром разделяемой библиотеки C ++.Код 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 естьС ++ вызовы функций malloc.JVM эффективно управляет этой памятью.