Java压力测试和内存

提问

我正在测试一个启动Restlet的应用程序,当http请求到达Restlet,启动新线程并处理该请求时,该应用程序将创建一个新对象并存储在Map中(
对于使用Jmeter的压力测试,我看到了Java进程内存的问题,我不知道问题是堆,堆栈还是其他方式,让我们看一下问题:

我多次启动相同的案例,首先运行我的项目(当然要使用空缓存):

> 500个线程->线程的平均时间为1900毫秒
> 500个线程->线程的平均时间为600毫秒
> 500个线程->线程的平均时间为598毫秒
> 500个线程->线程的平均时间为670毫秒
….

如您所见,我的问题是第一次执行比其他执行花费更长的时间.每个线程都在Map中存储实例化对象,并且当它为空时似乎工作很慢.有人知道谁会去吗?我试图增加jvm的堆启动内存,但是没有用.
如果有人知道任何参考资料可以帮助我欣赏

谢谢.

最佳答案

我怀疑您的JVM在第一次执行时没有预热.尝试添加-XX:PrintCompilation,以查看是否在第一次测试中正在编译代码,但不是在第二次测试中.