
Java内存区域
发布日期:2021-05-06 23:32:07
浏览次数:20
分类:技术文章
本文共 764 字,大约阅读时间需要 2 分钟。
1.程序计数器
线程私有的内存,一块较小的内存空间,是当前程序所执行的字节码的行号指示器。字节码解释器在工作时,通过改变程序计数器的值来选取下一条字节码指令来执行。
每个线程都需要拥有独立的程序计数器,且彼此之间独立存储、互不影响,依次来保证线程切换后恢复到正确的执行位置。 如果执行的Java方法,计数器记录的是字节码指令的地址。如果是Native方法,计数器记录的是空。2.Java虚拟机栈
线程私有的内存,生命周期与线程相同,描述的是Java方法执行的内存模型:每个方法在执行的同时,都会创建一个栈帧。存储局部变量表、操作数栈、动态链接、方法出口等。方法的调用——>完成,对应着栈帧在虚拟机中入栈——>出栈
定义有两种异常状态:a.线程请求的栈深度 > 虚拟机允许的深度,抛出StackOverflowError;b.虚拟机动态扩展时,无法申请到足够的内存,抛出OutOfMemoryError3.本地方法栈
线程私有的内存,与虚拟机栈发挥的作用相似,区别在于虚拟机栈为虚拟机执行java方法服务,本地方法栈为虚拟机执行Native方法服务。也会抛出StackOverflowError和OutOfMemoryError异常
4.Java堆
线程共有,是JVM管理的内存最大的一块,虚拟机启动时创建。唯一的目的就是存放实例对象,几乎所有的对象实例都在这里分配内存。
Java堆是垃圾收集器管理的主要区域,也叫GC堆。异常状态OutOfMemoryError5.方法区
线程共有,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等。异常状态:OutOfMemoryError
6.运行时常量池
方法区的一部分,存放编译器生成的各种字面量、符号引用。异常状态当然也是OutOfMemoryError
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年03月18日 01时38分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Scala_1.控制台打印,变量定义,函数定义
2019-03-04
十五.Python异常处理
2019-03-04
c++备考期末必须看的知识点(一篇就够了)
2019-03-04
qt中初始化界面的几种方法
2019-03-04
【图论】游乐场
2019-03-04
【图论】【最短路】USACO 2.4 牛的旅行 (最短路)
2019-03-04
【图论】【最短路】工厂的烦恼
2019-03-04
【图论】刻录光盘
2019-03-04
C语言初阶——指针
2019-03-04
[88]. 合并两个有序数组(C语言)
2019-03-04
docker部署Hadoop环境
2019-03-04
最全环境搭建-常用软件安装
2019-03-04
Linux 安装 MySql
2019-03-04
系统架构
2019-03-04
网关程序的开发
2019-03-04
SpringBoot(Spring IOC 和 Spring MVC)(待补充)
2019-03-04
变量命名的通用规则
2019-03-04
MFC中精确获取时间并且计算事情所用时间
2019-03-04
程序员职业划分
2019-03-04