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

JVM堆(1.6、1.7、1.8)

一、jdk1.6

在jdk1.6里,堆的具体划分如下:

栈:包含本地方法栈、虚拟机栈、程序计数器

方法区(永久代):包含运行时常量池、字符串池

二、jdk1.7

栈:包含本地方法栈、虚拟机栈、程序计数器

堆:字符串池

方法区(永久代):包含运行时常量池

和1.6相比字符串常量池从方法区挪到了堆上

三、jdk1.8

栈:包含本地方法栈、虚拟机栈、程序计数器

堆:字符串池

元空间(堆外直接内存):运行时常量池

和1.7相比,直接取消了方法区(永久代),新增元空间。元空间放在直接内存里,不再占用堆内存。

四、各个区域解释

程序计数器

        一个只读的存储器,用来记录虚拟机执行的字节码指令地址,线程私有。确保时间片轮转之后程序还能继续执行。

Java虚拟机栈

      线程私有存储器,程序运行时,每个方法都会打包成一个栈帧,存储了局部变量表、操作数栈、方法出口等信息,然后放入栈,每个时刻在执行的方法就是当前栈顶的栈帧。方法的执行对应着虚拟机栈的出栈入栈过程。

本地方法栈

        调用本地native方法

        存储对象的运行时数据区。在虚拟机运行时内存总体最大的一块。几乎所有对象都要在堆上分配(JIT优化,逃逸分析,无逃逸的会进行锁消除、栈上分配内存,参数逃逸-不会被外部访问会进行锁消除),也是垃圾回收发生的主要区域

方法区(永久代)或者元空间

        存储被加载的类信息、常量、静态变量、即时编译后的代码等数据。没加载一个类,方法区就分配一定的内存空间

运行时常量池

        方法区的一部分。存储编译阶段生产的信息,包括字面量和符号引用常量两类。符号引用常量包括累的全限定名称、字段名称和描述符、方法名称和描述符。


http://www.kler.cn/a/399492.html

相关文章:

  • 【route】route add命令详解
  • 2023年MathorCup数学建模B题城市轨道交通列车时刻表优化问题解题全过程文档加程序
  • PHP 语法基础
  • 电商系统开发:Spring Boot框架实战
  • Java | Leetcode Java题解之第564题寻找最近的回文数
  • 关于网络安全里蜜罐的详细介绍
  • 机器学习———特征工程
  • 使用Python和BeautifulSoup进行网页抓取:通过Python编程语言,结合BeautifulSoup库,可以轻松地从网站上抓取所需的信息。
  • TCP协议(一)
  • 【Golang】——Gin 框架简介与安装
  • <项目代码>YOLOv8 番茄识别<目标检测>
  • Towards Reasoning in Large Language Models: A Survey
  • OpenGL 进阶系列09 - 计算着色器
  • 力扣整理版七:二叉树(待更新)
  • 小程序-基于java+SpringBoot+Vue的驾校预约平台设计与实现
  • windbg 关于L10比L9多更多行,和poi的含义
  • 【Linux---09】Crontab定时调度
  • 【C++】哈希表的实现详解
  • 如何在 WordPress 中轻松强制所有用户退出登录
  • Android Osmdroid + 天地图 (一)