java应用程序的内存消耗

时间:2018-05-21 16:41:52

标签: java memory jvm

我在Java中开发了一些通过init.d脚本初始化的应用程序。运行应用程序一段时间后,我发现了以下内容:

$cat /proc/[java_app_pid]/cmdline
java-Xmx256m... other options

$cat /proc/[java_app_pid]/status
...
VmHWM:    669176 kB
VmRSS:    560352 kB
...

从我可以看到,对于256 MB堆,整个驻留大小内存消耗为560MB,HWM 669 MB。它看起来像低效的内存利用率(HWM是堆大小的2.5倍)。

我的应用程序没有分配任何直接缓冲区(显式)。它通过NIO捕获文件系统事件并处理它们。

我的第一个想法是标题消耗了内存。但是对于64位VM记录here,它们为每个实例消耗了8个字节。它们所在的位置(堆/ offheap)在我链接的源中未指定。

我想通过gdb进行内存转储,但我不知道堆/非堆内存所在的地址空间。你能否指出一些方向来调查这个问题?

0 个答案:

没有答案