当前位置: 首页 > news >正文

JVM的五大内存区域

JVM的五大内存区域

JVM内存区域最粗略的划分可以分为 堆 和 栈 ,当然,按照虚拟机规范,可以划分为以下几个区域:

在这里插入图片描述
JVM内存分为线程独享区和线程共享区,
其中 方法区 和 堆 是线程共享区,
虚拟机栈, 本地方法栈和程序计数器是线程独享区,为单个线程服务.

  1. 程序计数器(Program Counter Register) :程序计数器是一块较小的内存区域,它可以看作是当前线程所执行的字节码的行号指示器。每个线程都有自己独立的程序计数器,用于记录当前线程执行的位置,以便线程切换后能够恢复到正确的执行位置。

  2. Java虚拟机栈(Java Virtual Machine Stack) :每个线程在执行Java方法时,都会创建一个对应的栈帧(Stack Frame),用于存储局部变量、方法参数、操作数栈和动态链接等信息。栈帧的大小在编译时就确定下来,栈的大小也可以在启动时进行调整。

  3. 本地方法栈(Native Method Stack):本地方法栈与Java虚拟机栈类似,但是它为本地方法(Native Method)服务。本地方法是使用其他语言(如C、C++)编写的方法,它们与Java代码进行交互,需要独立的栈来支持。

  4. Java堆(Java Heap):Java堆是Java虚拟机管理的最大一块内存区域,用于存储对象实例和数组。Java堆是所有线程共享的,它在JVM启动时被创建,并且在运行时进行动态扩展或收缩。垃圾回收器负责在堆上进行垃圾回收,以释放不再使用的对象。Java堆是垃圾收集器管理的内存区域,因此一些资料中它也被称作“GC堆”(Garbage Collected Heap,)。从回收内存的角度看,由于现代垃圾收集器大部分都是基于分代收集理论设计的,所以Java堆中经常会出现 新生代老年代Eden空间From Survivor空间To Survivor空间 等名词,需要注意的是这种划分只是根据垃圾回收机制来进行的划分,不是Java虚拟机规范本身制定的。
    在这里插入图片描述

  5. 方法区(Method Area):方法区也称为永久代(Permanent Generation),用于存储已加载的类信息、常量、静态变量、即时编译器编译后的代码等。在JDK 8及之后的版本中,永久代被移除,取而代之的是元空间(Metaspace),它使用本地内存来存储类的元数据
    在这里插入图片描述

相关文章:

  • AGI 之 【Hugging Face】 的【Transformer】的 [ Transformer 架构 ] / [ 编码器 ]的简单整理
  • 【python】OpenCV—Nighttime Low Illumination Image Enhancement
  • 1.1.2数据结构的三要素
  • 将带有 商店idr 商品信息的json导入到mongodb后,能不能根据商店id把所有商品全部提取并转为电子表格
  • 基于Echarts进行图表组件的封装
  • 在Linux/Debian/Ubuntu中出现“Could not get lock /var/lib/dpkg/lock-frontend”问题的解决办法
  • maven项目、idea抽风问题解决
  • 【React性能优化】父组件渲染如何避免子组件不必要的渲染
  • xcrun: error: unable to find utility “simctl“, not a developer tool or in PATH
  • 从硬件角度看Linux的内存管理
  • Map Set(Java篇详解)
  • 自定义代理编辑控件类TSpinBoxDelegate
  • 【区分vue2和vue3下的element UI PageHeader 页头组件,分别详细介绍属性,事件,方法如何使用,并举例】
  • Linux之文本三剑客
  • 基于单片机技术的按键扫描电路分析
  • [译] 怎样写一个基础的编译器
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • chrome扩展demo1-小时钟
  • javascript从右向左截取指定位数字符的3种方法
  • js递归,无限分级树形折叠菜单
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 简单易用的leetcode开发测试工具(npm)
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 配置 PM2 实现代码自动发布
  • 悄悄地说一个bug
  • 小而合理的前端理论:rscss和rsjs
  • 优化 Vue 项目编译文件大小
  • 《天龙八部3D》Unity技术方案揭秘
  • 数据库巡检项
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • #100天计划# 2013年9月29日
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (第二周)效能测试
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)scrum常见工具列表
  • (转)setTimeout 和 setInterval 的区别
  • (转)树状数组
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (转载)hibernate缓存
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .net core 依赖注入的基本用发
  • .Net组件程序设计之线程、并发管理(一)
  • @AliasFor注解
  • @EnableConfigurationProperties注解使用
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @Query中countQuery的介绍
  • @WebService和@WebMethod注解的用法
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [BeginCTF]真龙之力
  • [C#]winform部署yolov5-onnx模型