有没有办法告诉JVM在处理之前优化我的代码?

Rog*_*ach 4 java optimization jvm

我有一个方法,第一次执行需要很长时间.但经过几次调用后,时间缩短了大约30倍.因此,为了使我的应用程序更快地响应用户交互,我使用一些关于应用程序初始化的示例数据"预热"此方法(5次).但这会增加应用启动时间.
我读过,JVM可以优化并编译我的java代码到本机,从而加快速度.我想知道 - 也许有一些方法可以明确告诉JVM我希望在启动应用程序时编译这个方法?

hvg*_*des 6

JVM在运行时进行JiT(即时)优化.这意味着它可以分析代码的执行方式,并进行优化以提高运行时性能.这在运行时发生.如果你看到这个方法在几次执行后变得更快,那可能是因为JiT优化(除非你的分析有缺陷,比方说,因为数据变得更简单,方法变得更快).如果您的分析是正确的,那么编译为native可能会对您造成伤害,因为您将不再获得运行时优化.

我们能看到这种方法吗?您可以在不必担心JVM如何工作的情况下加快速度.您应该准确地隔离最昂贵的操作的位置.您还应该验证这不是某种垃圾收集问题.也许方法很好,但有一个GC正在咀嚼时间,当它完成时你的方法以可接受的速度运行.