JVM存储区划分及是否线程隔离

本文介绍了JVM的系统划分,重点讲解了运行时数据区的组成,包括程序计数器、方法区、堆、虚拟机栈和本地方法栈。强调了程序计数器、虚拟机栈和本地方法栈是线程隔离的,而方法区和堆是线程共享的,垃圾回收主要发生在堆上。并提供了一道关于JVM内存的单选题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java面试题——JVM存储区划分及是否线程隔离

JVM系统划分

java虚拟机包括一个类加载器子系统(Class Loader SubSystem)、运行时数据区(Runtime Data Area)、执行引擎和本地接口库(Native Interface Library)。本地接口库通过调用本地方法库(Native Method Library)与操作系统交互。
在这里插入图片描述

  1. 类加载器子系统用于将编译好的class文件加载到JVM中;
  2. 运行时数据区用于存储在JVM运行过程中产生的数据,包括程序计数器、方法区、本地方法区、虚拟机栈和虚拟机堆;
  3. 执行引擎包括即时编译器和垃圾回收器,即时编译器用于将Java字节码编译成具体的机器码,垃圾回收器用于回收在运行过程中不再使用的对象;
  4. 本地接口库用于调用操作系统的本地方法库完成具体的指令操作。

运行时数据区划分

在这里插入图片描述
JVM初始运行的时候都会分配好 Method Area(方法区) 和Heap(堆) ,而JVM 每遇到一个线程,就为其分配一个 Program Counter Register(程序计数器) , JVM Stack(虚拟机栈)和Native Method Stack (本地方法栈), 当线程终止时,三者(虚拟机栈,本地方法栈和程序计数器)所占用的内存空间也会被释放掉。线程隔离的那三个区域的生命周期与所属线程相同,而线程共享的区域与JAVA程序运行的生命周期相同,所以这也是系统垃圾回收的场所只发生在线程共享的区域(实际上对大部分虚拟机来说只发生在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值