1.概述
背景参考:【jvm】java jstat 命令
如果编译日志包括类似下面这行信息:
timestamp compile_id COMPILE SKIPPED: reason
这行信息(包括文本文字 COMPILE SKIPPED)表示编译给定的方法有错误。出现这个错可能有以下两种原因。
1. 代码缓存满了
需用 ReservedCodeCache 标志增大代码缓存的大小。
2. 编译的同时加载类
编译类的时候会发生修改。 JVM 之后会再次编译,你可以在之后的日志中看到方法被再次编译。
在所有这些情况(除了代码缓存被填满)中,编译都可以再次尝试。如果不能,说明代码编译出了错。虽然通常是编译器的缺陷,但常用的解决方法是将代码重构得更简单,以使编译器能够处理。