JVM中CodeCache的工作原理和具体应用方法是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1283个文字,预计阅读时间需要6分钟。
一. CodeCache简介CodeCache代表了即时编译(JIT)的代码缓存区。简单来说,它存储了JIT编译器编译出的代码,这些代码是即时编译器生成的机器码(native code)。CodeCache中的内容是JIT编译过程中产生的,用于优化程序运行效率。JNI(Java本地接口)的机器码也存在于CodeCache中。
一. CodeCache简介
从字面意思理解就是代码缓存区,它缓存的是JIT(Just in Time)编译器编译的代码,简言之codeCache是存放JIT生成的机器码(native code)。当然JNI(Java本地接口)的机器码也放在codeCache里,不过JIT编译生成的native code占主要部分。
大致在JVM中的分布如下:
大家都知道javac编译器,把java代码编译成class字节码,它和JIT编译器的区别是,javac只是前端编译(有的叫前期编译),jvm是通过执行机器码和底层交互的,这样我们编写的业务代码才能生效。所以还要把字节码class编译成与本地平台相关的机器码,这个过程就是后端编译。
后端编译根据具体的执行方式不同又分为两种:
1.解释执行
一行一行解释成机器码再执行,每次调用时都需要重新逐条解释执行。
2.编译执行(JIT)
将频繁调用的方法或循环体编译成机器码后,进行多层优化,然后缓存到codeCache里,避免重复编译。
两种执行方式的区别很明显,第一种在遇到频繁调用的方法或代码块时执行效率很低,但是解释执行可以节省内存(不存放到codeCache),立即执行。
本文共计1283个文字,预计阅读时间需要6分钟。
一. CodeCache简介CodeCache代表了即时编译(JIT)的代码缓存区。简单来说,它存储了JIT编译器编译出的代码,这些代码是即时编译器生成的机器码(native code)。CodeCache中的内容是JIT编译过程中产生的,用于优化程序运行效率。JNI(Java本地接口)的机器码也存在于CodeCache中。
一. CodeCache简介
从字面意思理解就是代码缓存区,它缓存的是JIT(Just in Time)编译器编译的代码,简言之codeCache是存放JIT生成的机器码(native code)。当然JNI(Java本地接口)的机器码也放在codeCache里,不过JIT编译生成的native code占主要部分。
大致在JVM中的分布如下:
大家都知道javac编译器,把java代码编译成class字节码,它和JIT编译器的区别是,javac只是前端编译(有的叫前期编译),jvm是通过执行机器码和底层交互的,这样我们编写的业务代码才能生效。所以还要把字节码class编译成与本地平台相关的机器码,这个过程就是后端编译。
后端编译根据具体的执行方式不同又分为两种:
1.解释执行
一行一行解释成机器码再执行,每次调用时都需要重新逐条解释执行。
2.编译执行(JIT)
将频繁调用的方法或循环体编译成机器码后,进行多层优化,然后缓存到codeCache里,避免重复编译。
两种执行方式的区别很明显,第一种在遇到频繁调用的方法或代码块时执行效率很低,但是解释执行可以节省内存(不存放到codeCache),立即执行。

