返回信息流今天在研究Java的JIT,写了下面这个程序:
public class Main {
public static void main(String[] args) {
long start = System.currentTimeMillis();
long n = 0;
for (int i = 0; i < 100000000000L; i++) {
}
System.out.println("" + n);
long end = System.currentTimeMillis();
System.out.println("time: " + (end - start));
}
}
下面是编译执行:
看起来是正常执行的,虽然死循环了
之后用jstat观察编译情况:
为什么会有编译失败的情况呢,是什么导致在即时编译的时候编译失败呢?
手动@暖羊羊
这是一条镜像帖。来源:北邮人论坛 / java / #58241同步于 2017/12/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java的即时编译器JIT的问题
wislov
2017/12/2镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
用什么命令能看到这个啊?
【 在 july93 (冬木) 的大作中提到: 】
: 这个死循环中有需要优化的代码?
: 显示compilation skipped.
嗯!我知道,就是想让循环不结束
【 在 nuanyangyang (暖羊羊) 的大作中提到: 】
: int值无论如何都不会大于2147483647,更不用说100000000000L了。
如果循环不结束,那么不管优化还是不优化,都结束不了。所以,JVM很英明地决定不优化了。
【 在 wislov 的大作中提到: 】
: 嗯!我知道,就是想让循环不结束