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