java压力测试与内存

java压力测试与内存,java,memory,heap,Java,Memory,Heap,我正在测试一个启动restlet的应用程序,当http请求到达restlet时,启动一个新线程并处理该请求,应用程序将创建一个新对象并存储在映射中( 对于我正在使用Jmeter的压力测试,我发现java进程内存有问题,我不知道问题是堆、堆栈还是其他问题,让我们来说明问题: 我多次启动同一个案例,首先运行我的项目(当然是空缓存): 500线程->线程的平均时间为1900毫秒 500线程->线程的平均时间为600毫秒 500个线程->线程的平均时间为598毫秒 500个线程->线程的平均时间为670

我正在测试一个启动restlet的应用程序,当http请求到达restlet时,启动一个新线程并处理该请求,应用程序将创建一个新对象并存储在映射中( 对于我正在使用Jmeter的压力测试,我发现java进程内存有问题,我不知道问题是堆、堆栈还是其他问题,让我们来说明问题:

我多次启动同一个案例,首先运行我的项目(当然是空缓存):

  • 500线程->线程的平均时间为1900毫秒
  • 500线程->线程的平均时间为600毫秒
  • 500个线程->线程的平均时间为598毫秒
  • 500个线程->线程的平均时间为670毫秒
  • 如您所见,我的问题是第一次执行的时间比其他线程长得多。每个线程在一个映射中存储instantation对象,当它为空时,似乎工作得非常慢。有人知道谁可能会去吗?我尝试增加jvm的堆启动内存,但不起作用。 此外,如果有人知道任何参考资料,可以阅读,以帮助我欣赏它


    谢谢。

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

    在性能测试Java应用程序时,您必须始终确保JVM有时间“预热”。这是由于现代JVM的优化(例如,代码运行时Oracle的make

    为了获得有意义的结果,您需要在获取给定配置/负载的结果之前,运行足够的测试用例,以便稳定时间

    见:


    谢谢Peter,我添加了这个参数,我得到了非常有趣的结果,现在我必须学习。我还尝试了参数化jvm添加-Xmn100M-Xms500M-Xmx500M,结果更好,对链接Malcom更敏感,它们非常有趣!!