一、JVM运行时数据区域是怎样的?
JVM运行时数据区域组成有以下几项:
- 堆:线程共享,用于存放对象实例,同时还用于垃圾回收
- 虚拟机栈:线程私有,用于存放局部变量(每次方法调用都会创建一个栈帧,用于存放局部变量表、操作数栈、动态链接、返回地址等,方法执行完就会弹出栈帧)
- 本地方法栈:线程私有,跟虚拟机栈类似,不同的是它支持的是Native方法
- 方法区(元空间):也叫永久区(JDK8之后叫元空间),用于存放已经被JVM加载的类信息、常量、静态变量
- 程序计数器:线程私有,用于存放JVM正在执行的字节码指令的地址,用于指示每个线程下一条即将被执行的字节码指令的位置