java进程使用的内存比堆所使用内存大很多

新手上路,请多包涵
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
19129 root      20   0 12.178g 4.843g  16380 S  23.3 31.2   1236:44 java

linux下,使用top命令,查看到进程占用内存4.843g,但是通过jmap查看堆内存,只使用了不到2G,如下图:

而且这个进程所使用的内存会一直增加,直到服务器内存100%,最后无法提供服务。。。请问这种情况怎么排查是什么原因导致的这个问题

阅读 4.2k
3 个回答

2031MB + 4096MB 这都6G了……
加参数oom的时候dump,或者发现不对的时候去dump,然后用mat分析一下哪里出现了内存泄漏

jmap看不到直接内存和其他原生内存的使用,可以使用NMT查看是否是堆外哪块内存占用特别大。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题