作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
编写微基准测试时,可以观察到运行时的巨大差异,具体取决于方法是否已编译。有没有办法从程序内部判断某个特定方法是否已被编译?或者,有没有一种方法可以请求它,或者知道如何在没有任何额外信息的情况下充分预热它,例如传递给 JVM 的标志?显然,这不一定是完美的(例如,可能存在导致 JVM 回退到解释代码的某些条件),但它肯定会有所改进。
最佳答案
对于 Sun/Oracle JVM,您可以使用 -XX:CompileThreshold=1000
设置。
这 - 作为 official documentation状态 - 定义:
Number of method invocations/branches before compiling
然后,只需使用数字来“预热”JVM。
您还可以将 -XX:-PrintCompilation
与 -XX:CompileThreshold
一起使用,以便在编译方法时收到通知(在控制台中)。
关于java - 有没有办法从 JVM 内部判断某个特定方法是否已经过 JIT 编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13435438/
我是一名优秀的程序员,十分优秀!