【发布时间】:2016-04-03 02:25:46
【问题描述】:
我是 Java 新手。我正在阅读有关 JVM 预热的内容,并了解它指的是 JVM 找到热点并 JIT 这些代码部分所花费的时间。
我还明白,我必须运行数百次测试才能做到这一点。
但我不明白的事情如下:
在我的 JVM 完全预热之前,我应该如何确定测试应该运行的次数?
这是否会将 JVM 更改为 JVM?我的意思是,如果我能够通过运行 1000 次迭代来预热我的 JVM,那么其他人最终可能需要更多或更少吗?
运行测试是预热 JVM 的唯一方法吗?
我应该何时预热 JVM?我是说频率。我应该在每次停止和启动应用程序时执行此操作,还是在重新启动服务器后执行一次?
这是我在这里的第一个问题。我在发布之前阅读了指南。如果有任何错误,请提出修改建议。
【问题讨论】:
-
您说的是哪种应用程序?为什么你认为你需要热身?运行测试将预热运行测试的 JVM。不是为您的应用程序提供服务的 JVM。
-
你在做任何类型的基准测试吗?
-
@SMA 是的,我们正在研究一种算法来丰富每秒收到的大量交易。
-
@JBNizet 从我读到的关于 JVM 预热的内容看来,如果我的交易量很大,那么如果我的 JVM 已经预热,则所需的时间会更少。我仍然理解这些概念。我应该如何预热为我的应用程序服务的 JVM?
-
您很可能正在预优化。只需启动您的 JVM,让它处理第一个真正的请求并识别热点:它很可能会足够快。如果您确实收到大量请求,它会自行迅速升温。无论如何,大多数在线应用程序都不受 CPU 限制,而是受 IO 限制。因此,如果一个方法在未预热时多花费 0.5 毫秒的时间,但无论如何在 IO 中花费了 200 毫秒,那么差异将可以忽略不计。