运行时数据区的结构都有哪些?哪些是共享的呢?哪些是非共享的呢?详细的介绍一下运行时数据区结构各部分的作用?你掌握的怎么样呢?
运行时数据区的结构都有哪些?哪些是共享的呢?哪些是非共享的呢?
运行时数据区的结构一共有五个部分
方法区、堆、虚拟机栈、本地方法栈、程序计数器
哪些是共享的呢?哪些是非共享的呢?
线程共享:堆(实例 对象) 方法区(类信息 静态变量 常量 编译后的代码)
线程私有:程序计数器(记录并保存此时线程执行的位置) 本地方法栈 虚拟机栈
详细的介绍一下运行时数据区结构各部分的作用?
- 方法区:线程共享的区域,方法区是逻辑上堆的一部分,所以他有个名字:非堆
运行时常量池、字段和方法数据,以及方法和构造函数的代码,包括类和实例初始化和接口初始化中使用的特殊方法,如果方法区域中的内存无法满足分配请求,Java 虚拟机将抛出一个OutOfMemoryError
- 堆:线程共享 堆是为所有类实例和数组分配内存的运行时数据区域 内存不足
OutOfMemoryError
- java虚拟机栈:执行java方法的 线程私有的
StackOverflowError、OutOfMemoryError
- 本地方法栈:执行本地方法 线程私有
StackOverflowError、OutOfMemoryError
- 程序计数器:记录程序执行到的位置 线程私有
总结:
JVM知识在面试过程中非常高频,大家一定要牢牢掌握,如果以上文章有帮助到你,希望可以点个关注,留下属于你的足迹,比心!我们下节再见哦。