我有一个方法,第一次执行需要很多时间。但在多次调用之后,它花费的时间减少了大约 30 倍。因此,为了让我的应用程序更快地响应用户交互,我使用一些有关应用程序初始化的示例数据“预热”此方法(5 次)。但这会增加应用程序的启动时间。
我读到,JVM 可以优化我的 java 代码并将其编译为 native 代码,从而加快速度。
我想知道 - 也许有一些方法可以明确告诉 JVM 我希望在应用程序启动时编译此方法?
最佳答案
JVM 在运行时执行 JiT(及时)优化。这意味着它可以分析代码的执行方式并进行优化以提高运行时性能。这发生在运行时。如果您发现该方法在几次执行后变得更快,这可能是因为 JiT 优化(除非您的分析有缺陷,并且,比如说,该方法变得更快是因为数据变得更简单)。如果您的分析是正确的,编译为 native 实际上可能会伤害您,因为您将不再获得运行时优化。
我们能看到这个方法吗?您也许可以使其更快,而不必担心 JVM 的工作方式。您应该在成本最高的操作所在的位置准确地隔离。您还应该确认这不是某种垃圾回收问题。也就是说,也许该方法没问题,但正在进行的 GC 正在耗费时间,完成后您的方法将以可接受的速度运行。
关于java - 有没有办法告诉 JVM 在处理之前优化我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4626351/