负载测试期间内存不断增加

时间:2019-12-17 07:18:23

标签: tomcat memory-leaks jmeter

我们正在使用Spring的Jersey,Hibernate来开发RESTful服务器。使用JMeter工具在本地运行负载测试,并使用javamelody监视CPU和内存使用情况。

几天后,我发现内存不断增加,但似乎再也没有释放过。我从javamelody生成了堆转储,并使用Eclipse内存分析器(MAT)来检查任何内存泄漏,但结果是未找到内存泄漏。

enter image description here

我不知道内存不断增加的原因。 有经验的人知道原因吗?

我的服务器环境是Tomcat 9和MySQL数据库。

下面是Tomcat Java选项

-Xms1024m

-Xmx4096m

-XX:NewSize = 512m

-XX:MaxNewSize = 2560m

-XX:MaxGCPauseMillis = 250

-XX:+ UseConcMarkSweepGC

-XX:+使用AdaptiveGCBoundary

-XX:+ CMSClassUnloadingEnabled

-XX:PermSize = 300m

-XX:MaxPermSize = 300m

-Dnetworkaddress.cache.ttl = 43200

谢谢!

1 个答案:

答案 0 :(得分:0)

JVM有一种惰性的垃圾收集方法。在接近xmx值之前,它不会尝试释放内存。同样,对xmxxms使用相同的值通常是一个好习惯,因为GC发生频率更高,但工作起来会更省力,因此应该会为您提供更好的性能。尝试将xmx和xms都设置为4G,并查看其行为。