(in my case, I am using java 8)
add to the command line: -XX:NativeMemoryTracking=summary
then run jcmd <PID> VM.native_memory
You should get something like this:
Total: reserved=3863657KB, committed=1679977KB - Java Heap (reserved=1843200KB, committed=824320KB) (mmap: reserved=1843200KB, committed=824320KB) - Class (reserved=1311974KB, committed=298726KB) (classes #52579) (malloc=5350KB #76340) (mmap: reserved=1306624KB, committed=293376KB) - Thread (reserved=263278KB, committed=263278KB) (thread #256) (stack: reserved=262140KB, committed=262140KB) (malloc=839KB #1280) (arena=299KB #510) - Code (reserved=278521KB, committed=164773KB) (malloc=28921KB #37983) (mmap: reserved=249600KB, committed=135852KB) - GC (reserved=114897KB, committed=77093KB) (malloc=13729KB #67925) (mmap: reserved=101168KB, committed=63364KB) - Compiler (reserved=461KB, committed=461KB) (malloc=330KB #1138) (arena=131KB #3) - Internal (reserved=13877KB, committed=13877KB) (malloc=13845KB #72978) (mmap: reserved=32KB, committed=32KB) - Symbol (reserved=28871KB, committed=28871KB) (malloc=24740KB #275452) (arena=4131KB #1) - Native Memory Tracking (reserved=8393KB, committed=8393KB) (malloc=45KB #523) (tracking overhead=8348KB) - Arena Chunk (reserved=184KB, committed=184KB) (malloc=184KB)
See https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr007.html for details
source share