java运行时区域

程序计数器
- 一块较小内存空间,当前线程执行字节码的行号指示器。
- 线程私有,线程切换后恢复到正确执行位置的基础。
- 循环,异常处理,线程恢复等检基础功能都需要依赖这个计数器完成。
虚拟机栈
- 线程私有
- 生命周期与线程相同
- 方法执行时JVM会创建栈帧,用于存储局部变量表,操作数栈,动态连接,方法出口等一些信息
- 局部变量表存放了编译期可知的各种jvm基本数据类型,引用类型,returnAddress
- 局部变量表在方法进入时的空间是完全确定的
- 方法调用==栈帧出栈入栈
本地方法栈
堆
- 被所有线程共享的一块内存区域,虚拟机启动时创建
- “几乎”所有对象实列都在这里分配
- 可以划分出多个线程私有的分配缓冲区,提升对象分配时的效率
方法区
- 线程共享内存
- 存储被jvm加载的类型信息,常量,静态常量,即时编译器编译后的代码缓存等数据
- 方法区和永久代并不是等价的,JDK8就没有永久代了,变成了元空间(Metaspace)
运行时常量池
- 是方法区的一部分
- Class文件有一个常量池表(Constant Pool Table),用于存放编译期生成的各种字面量与符号引用,这部分内容在类加载后放到方法区的运行时常量池中
- 运行期也能将常量放入常量池中,如String类的intren()方法
相关文章:
猜你喜欢
-
2021-05-11
-
2022-01-02
-
2021-11-02
-
2022-01-09
相关资源
-
下载
2023-01-06
-
下载
2023-03-12
-
下载
2023-03-02