Java JVM 或 Eclipse 启动开销

标签 java eclipse performance profiling

我有一个网络线程应用程序,在 Eclipse (Indigo) 和 Javd 1.7x 下运行。很长一段时间以来,我注意到应用程序的第一次运行会导致前端和后端加载性能下降,例如,如果我要加载应用程序,然后使用 100 个网络数据包(使用测试工具)来攻击它前几个响应会非常不稳定,最后几个响应则非常不稳定。 [编辑] 无需卸载应用程序,只需再次运行测试工具,应用程序即可正常执行。[编辑结束]

我决定尝试深入了解它并加载 VisualVM 1.3.5 来分析行为。运行开始时,CPU 使用率出现明显的峰值,从 10% 上升到超过 50%。在峰值之后,一切都显得正常,并且如上所述,后续运行在 CPU 利用率中没有领先的峰值,并且后续运行的配置文件与第一次运行的峰值之间的配置文件相同。似乎没有任何证据表明线程数量造成了这种情况,但有小幅上升。堆空间从 100MB 增加到 200MB,但除此之外一切看起来都很正常。

欢迎任何想法。

谢谢

最佳答案

第一次运行测试时,系统性能不稳定是很常见的情况。这是由于操作系统从磁盘读取库、JAR 文件和其他数据并将其存储在缓存中。完成此操作后,第一次所有后续运行都会更快且更一致。

此外,请记住,JVM 在启动后也往往会变慢。由于其热点分析和即时编译,代码需要运行一段时间,然后 JVM 才会针对您的特定工作负载优化字节码。

关于Java JVM 或 Eclipse 启动开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13717124/

相关文章:

java - 2 session对象java ee null异常

eclipse - 如何在 VIm 中使用 Eclipse 格式化程序配置文件?

java - 简单的 Tomcat/Servlets - 获取 HTTP 状态 404

Java 比较器通过对扩展公共(public)父类的类使用优先级

java - Crosswalk 从 JavaScript 调用 Java 方法

java - Eclipse VM 不会运行 Java 1.6

algorithm - (2n log(n) + n) 变位词检测函数并不比 4n + 26 函数慢多少,尽管 n 很大

performance - 使用顶点缓冲区绘制大量相同的模型?

mysql - 在 MySQL 表中正确索引的位置?

java - 如何解决松散耦合/依赖性注入(inject)与富域模型之间的冲突?