测试具有相同输入参数的Java服务器时会产生不同的堆大小

时间:2018-01-14 09:49:15

标签: java jvm performance-testing heap-memory

我是标记java服务器的工作台。我每次执行测试5次。每次测试发送到服务器的平均请求是1000(每秒)。服务器在每次测试中平均创建1000个线程。我每次进行5次测试。服务器在每次测试中平均创建1000个线程,但是我从jconsole获得的堆内存素材在每次测试时都显示了不同的模式。下图显示了java服务器在每次测试时创建了1000个线程,但每次运行时使用了不同数量的堆,尽管每个测试都使用相同的输入参数执行。我在这里缺少什么?在运行测试之前,我没有更改堆或堆栈大小。请帮助我理解我的java服务器在不同的运行中使用的堆内存。 enter image description here

1 个答案:

答案 0 :(得分:1)

我建议使用Profiler工具来检查所有场景中堆中的对象以及不同之处,选项包括:

(后两者是非自由的)

差异可能由多种原因引起:GC activity,预热缓存,JIT compilation,Java运行时优化等。

一个好的做法是逐渐增加 的负载,这样你就可以让JMeter和被测应用程序“热身”。您还可以将增加的负载与响应时间,吞吐量,错误数等其他指标相关联。有关实现不同负载模式的更多详细信息,请参阅JMeter Ramp-Up - The Ultimate Guide文章。