我正在运行一个简单的Java进程,运行Jetty,top显示2.9G的RAM。使用的JDK版本是1.8.0_112。
使用本地内存跟踪(jcmd),显示总承诺内存仅为1.5G内存。 此外,直接缓冲池的大小非常小,正如jvisualvm所报告的那样。我完全知道NMT显示的内存是已提交的内存,不需要在RAM中。在这种情况下,NMT内存对RES的贡献应该小于1.5GB的RES内存。
在我的情况下,这里的差异约为1.4G(RES显示了1.4G的额外内存),不能仅归因于共享库、jar文件。有人能建议我如何知道这些额外内存是什么,哪些工具可以用来检查它们吗?
我已经检查了所有现有的相关问题在线/Stackoverflow,但没有找到任何合适的答案。
VM.native_memory
,特别是Total.committed
可以给我一个大致的基准,告诉我应该传递什么值给docker -m
。就像楼主一样,我对于top -o %MEM
和Total.committed
之间存在如此大的差异感到非常困惑:( - Eugene