Java # JVM

一、1.8之前

运行时数据区(进程共享)

  • 运行时常量池
  • 为什么要有方法区:
    • jvm完成类装载后,需要将class文件中的常量池转入内存,保存在方法区中
  • 为什么是常量:
    • 常量对象操作较多,为了避免频繁创建和销毁

进程私有区域

  • 虚拟机栈:主要用于方法的调用,每次函数调用都对应一个栈帧,方法结束(异常也可)弹出栈帧,由于方法中局部变量本身是实例变量的引用,因此栈中实际上保存的是对gc堆中对象的引用。
  • 本地方法栈:服务非java原生方法
  • 程序计数器

二、关于运行时常量池和串池

  • 1.7之前:运行时常量池逻辑包含串池,位于方法区
  • 1.7:串池被放入了堆之中
  • 1.8:串池还在堆,方法区被取消,运行时常量池此时在原空间中

三、1.8及之后

将方法区拉出来,作为元空间,元空间使用直接内存

相关推荐
手握风云-2 分钟前
JavaEE初阶第一期:计算机是如何 “思考” 的(上)
java·java-ee
MYH5163 分钟前
无监督 vs 有监督的本质区别
开发语言
Humbunklung9 分钟前
JavaScript 将一个带K-V特征的JSON数组转换为JSON对象
开发语言·javascript·json
普通的冒险者18 分钟前
微博项目(总体搭建)
java·开发语言
ubax19 分钟前
day 51 python打卡
开发语言·python
BAGAE37 分钟前
Flutter 与原生技术(Objective-C/Swift,java)的关系
java·开发语言·macos·objective-c·cocoa·智慧城市·hbase
江湖有缘37 分钟前
使用obsutil工具在OBS上完成基本的数据存取【玩转华为云】
android·java·华为云
咖啡の猫1 小时前
JavaScript基础-DOM事件流
开发语言·javascript·microsoft
bxlj_jcj1 小时前
Kafka环境搭建全攻略:从Docker到Java实战
java·docker·kafka
国科安芯1 小时前
【AS32系列MCU调试教程】性能优化:Eclipse环境下AS32芯片调试效率提升
java·性能优化·eclipse