Java JNI: выделение / разбиение памяти - PullRequest
13 голосов
/ 13 мая 2011

При использовании JNI использует ли двоичный файл JNI собственную память или часть памяти, выделенную для JVM?


Подробнее

Когда вы указываете -Xmx1024m в качестве параметра JVM, выделяет ли JVM все 1024 МБ памяти для объектов Java?
Использует ли он часть этого для объектов Java и часть этого для двоичного файла JNI, или двоичный файл JNI должен использовать память в дополнение к этому количеству? Как JVM выделяет / разбивает / управляет использованием памяти в этом сценарии?


Похожие вопросы:

Предел выделения памяти Java

1 Ответ

18 голосов
/ 13 мая 2011

Как я обнаружил из первых рук, когда у нас произошла утечка памяти в каком-то коде JNI, двоичный файл JNI использует свою собственную память в процессе JVM вне пространства кучи JVM.Мы увидели, что Linux фактически убивает JVM, потому что JVM в целом превышает 3 ГБ виртуальной памяти.Но мы использовали -Xmx384m и использовали только около 40 МБ этого на стороне объектов Java, что в значительной степени доказывает, что JNI использует память вне пространства кучи JVM.

...