Память, выделенная вашей JVM, и память, используемая JNI и нативными приложениями, совершенно разные. Такие инструменты, как VisualVM и Jprofiler, могут помочь вам определить конкретное использование кучи JVM. Однако, если утечка памяти происходит из JNI или собственного приложения, вы должны использовать такие параметры, как -Xrunjnichk (доступно в IBM JDK) для отладки вызовов JNI.