I am launching a simple java process running on a jetty for which the top shows 2.9 g of RAM. The version of JDK used is 1.8.0_112.

Using Native Memory Tracking (jcmd) shows that total fixed memory is only 1.5 GB of memory

Also, the direct buffer pool size is very smaller, as reported by jvisualvm.

I am fully aware that the memory shown by NMT is a memory that should not be in RAM. In this case, the contribution of NMT memory to RES should be equal to 1.5 GB of RES memory.
In my case, the difference here is ~ 1.4G (RES shows 1.4G of additional memory), which cannot be attributed only to shared libs, jars. Can someone tell me how to find out what additional memory is and what tools can be used to check it?
I checked all existing related problems online / Stackoverflow, but could not find a suitable answer.
source share