Java # JVM

一、1.8之前

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

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

进程私有区域

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

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

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

三、1.8及之后

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

相关推荐
IU宝3 分钟前
C/C++内存管理
java·c语言·c++
湫ccc3 分钟前
《Python基础》之pip换国内镜像源
开发语言·python·pip
瓜牛_gn3 分钟前
依赖注入注解
java·后端·spring
fhvyxyci4 分钟前
【C++之STL】摸清 string 的模拟实现(下)
开发语言·c++·string
hakesashou4 分钟前
Python中常用的函数介绍
java·网络·python
qq_459730036 分钟前
C 语言面向对象
c语言·开发语言
佚先森13 分钟前
2024ARM网络验证 支持一键云注入引流弹窗注册机 一键脱壳APP加固搭建程序源码及教程
java·html
菜鸟学Python15 分钟前
Python 数据分析核心库大全!
开发语言·python·数据挖掘·数据分析
一个小坑货22 分钟前
Cargo Rust 的包管理器
开发语言·后端·rust
bluebonnet2727 分钟前
【Rust练习】22.HashMap
开发语言·后端·rust