【发布时间】:2020-11-06 07:04:56
【问题描述】:
我的 java 服务在 16 GB RAM 主机上运行, -Xms 和 -Xmx 设置为 8GB。 主机正在运行其他几个进程。
我注意到我的服务随着时间的推移会消耗更多的内存。
我在主机上运行了这个命令ps aux | awk '{print $6/1024 " MB\t\t" $11}' | sort -n,并记录了我的java服务的内存使用情况。
服务启动时,它使用了大约 8GB 内存(因为 -Xms 和 -Xmx 设置为 8GB),但一周后,它使用了大约 9GB+ 内存。它每天消耗大约 100MB 的内存。
我做了一个堆转储。我重新启动了服务并进行了另一个堆转储。我比较了这两个转储,但堆使用量没有太大差异。转储显示该服务在重启前使用了大约 1.3GB,在重启后使用了大约 1.1GB。
从进程内存使用情况来看,我的服务随着时间的推移消耗了更多内存,但堆转储中没有报告。如何识别服务中内存使用量的增加?
我将 -Xms 和 -Xmx 设置为 8GB。主机有 16GB 内存。我是否将最小/最大堆设置得太高(主机上总内存的 50%)?这会导致任何问题吗?
【问题讨论】:
标签: java memory-leaks jvm