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

标签 java optimization jvm

我有一个方法,第一次执行需要很多时间。但在多次调用之后,它花费的时间减少了大约 30 倍。因此,为了让我的应用程序更快地响应用户交互,我使用一些有关应用程序初始化的示例数据“预热”此方法(5 次)。但这会增加应用程序的启动时间。
我读到,JVM 可以优化我的 java 代码并将其编译为 native 代码,从而加快速度。 我想知道 - 也许有一些方法可以明确告诉 JVM 我希望在应用程序启动时编译此方法?

最佳答案

JVM 在运行时执行 JiT(及时)优化。这意味着它可以分析代码的执行方式并进行优化以提高运行时性能。这发生在运行时。如果您发现该方法在几次执行后变得更快,这可能是因为 JiT 优化(除非您的分析有缺陷,并且,比如说,该方法变得更快是因为数据变得更简单)。如果您的分析是正确的,编译为 native 实际上可能会伤害您,因为您将不再获得运行时优化。

我们能看到这个方法吗?您也许可以使其更快,而不必担心 JVM 的工作方式。您应该在成本最高的操作所在的位置准确地隔离。您还应该确认这不是某种垃圾回收问题。也就是说,也许该方法没问题,但正在进行的 GC 正在耗费时间,完成后您的方法将以可接受的速度运行。

关于java - 有没有办法告诉 JVM 在处理之前优化我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4626351/

相关文章:

java - 了解最大 JVM 堆大小 - 32 位与 64 位

Java JNA WinAPI 函数使 JVM 无声地崩溃

java - 如何在 Java Neo4J 中正确迭代 Cypher 查询的组合结果

java - SSL 握手异常 : "Algorithm constraints check failed: MD5withRSA"

python - TensorFlow默认在线或批量训练

c++ - 遍历对象集合的最快方法

java - JVM 有问题的框架 - EXCEPTION_ACCESS_VIOLATION 错误

scala - 优化对不可变对象(immutable对象)的冗余调用

java - @ComponentScan 和 @Autowired 无法从特定包注入(inject)

c - C中高效的缓存使用