gpt4 book ai didi

java - Java VM 的启动时间?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:51:58 26 4
gpt4 key购买 nike

我目前正在调查一项性能测试中的奇怪行为:在这个测试中,我多次执行了一个相当复杂的计算。测试显示出一些加速行为。第一次运行是最昂贵的运行,之后大约 100 次运行的执行时间为 1000-5000ns,之后下降到 10-40ns。由于测试使用随机生成的值,我修改了测试以生成一次数据,然后使用完全相同的数据执行测试。

为了消除类加载和其他问题,我什至执行了一次运行并添加了一秒钟的 sleep ,让任何背景东西有机会完成加载类和其他东西。

我本以为在整个运行过程中执行时间相似,并且可以理解由于垃圾收集启动而导致的性能下降......但是看到运行速度越来越快似乎很奇怪。

我真的无法解释这种行为。 VM 中是否有任何可以进行某种优化的效果?

克里斯

最佳答案

此效果是由 HotSpot 造成的。

HotSpot 负责字节码的运行时执行。

首先它解释字节码。这非常慢。

如果 HotSpot 检测到您的代码被定期执行,它会在执行代码的计算机上将代码编译为 native 代码。这首先提高了执行速度。

之后 HotSpot 仍在分析您的代码。如果它经常被调用(是你程序的热点)HotSpot 会优化你的代码。当它确定您的代码经常运行并且执行时间很长时,就会更频繁地执行此操作。优化越来越激进。

因此,经常执行且花费时间长的代码会越来越优化,如果您的代码是可优化的,那么它会做越来越多的优化。

可以找到这方面的白皮书 here .

关于java - Java VM 的启动时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17235730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com