Java # JVM

一、1.8之前

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

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

进程私有区域

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

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

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

三、1.8及之后

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

相关推荐
坐吃山猪1 分钟前
MFlow03-数据模型解析
开发语言·python·源码·agent·记忆
CodeMartain3 分钟前
@SpringBootApplication 到底是什么呢?
java·spring boot·intellij-idea
流年如夢5 分钟前
结构体:定义、使用与内存布局
c语言·开发语言·数据结构·c++·算法
weixin_568996066 分钟前
HTML怎么离线使用_HTML缓存策略基础配置【教程】
jvm·数据库·python
thankseveryday6 分钟前
Three.js 把 Blender 绘制的曲线(Bezier / 曲线) 导入 Three.js 并作为运动路径 / 动画路径使用
开发语言·javascript·blender
星秀日7 分钟前
大学生开发社区项目-CLXHXH-登录功能
java
Ulyanov7 分钟前
《玩转QT Designer Studio:从设计到实战》 QT Designer Studio动画与动效系统深度解析
开发语言·python·qt·系统仿真·雷达电子对抗仿真
2301_7735536210 分钟前
怎么删除MongoDB中不再使用的账号
jvm·数据库·python
qq_3422958211 分钟前
SQL报表星型模型优化_事实表索引设计
jvm·数据库·python
兩尛13 分钟前
struct,union,Class,bitfield各自的作用和区别
java·开发语言