Java # JVM

一、1.8之前

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

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

进程私有区域

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

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

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

三、1.8及之后

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

相关推荐
郝学胜-神的一滴4 分钟前
深度拆解Python迭代协议:从底层原理到核心实践,解锁异步编程的基石
java·网络·python
码云数智-大飞4 分钟前
前端性能优化实战:如何大幅减少应用加载时间?
java
Memory_荒年4 分钟前
SpringBoot 3.x 新特性:让代码自己“996”,你准时下班!
java·后端·spring
Yang-Never5 分钟前
AI Code -> Windows电脑安装Claude
开发语言·windows·git
天下无敌笨笨熊11 分钟前
C#异步开发探微
开发语言·c#
2401_8331977311 分钟前
更优雅的测试:Pytest框架入门
jvm·数据库·python
后端AI实验室12 分钟前
等保三级整改,敏感数据加密,数十个系统——3个人用Cursor一周搞定了
java·ai
qq_3340602113 分钟前
spring_springmvc_mybatis权限控制+boostrap实现UI
java·spring·mybatis
2301_7938046914 分钟前
C++中的访问者模式变体
开发语言·c++·算法
2501_9454248018 分钟前
模板代码版本兼容
开发语言·c++·算法