Java # JVM

一、1.8之前

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

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

进程私有区域

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

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

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

三、1.8及之后

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

相关推荐
小羊没烦恼!1 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里1 天前
java中的继承和多态的区别
java
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕1 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖1 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时1 天前
01-06-A-JVM排查实战详解
java·jvm
伞伞悦读1 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
vipxieliang1 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
C语言小火车1 天前
C/C++ 为什么需要编译器?
开发语言·c++