【退役之重学Java】JVM 内存模型和 GC 简述

一、JVM 内存

  1. 栈区:存放所有最直接变量,如果是基本数据类型,则存放其值,如果是引用类型,则存放其地址值
  2. 堆区:对象的存放区域,如果有对象的属性还是一个对象,那么会采用链式存储(一对多,更像是树式存储)
  3. 方法区(元空间):存放全局数据信息,比如静态变量,方法字节码,类的结构信息,运行时常量池等
  4. 本地方法栈:C++ (不用在意)
  5. 程序计数器:程序运行的位置 (不用在意)

二、GC

堆空间的分区:

young

S0

S1

Edge

old
S0 和 S1 交替使用,比如,S0 和 Edge 一起做完一次 GC,就把存活的对象复制到S1,并清空 S0 和 Edge,下一次GC 就用 S1 和 Edge 做,把存活下来的对象复制到 S0,并清空 S1 和 Edge

存活六次以上young GC 的对象放到 old 区

相关推荐
代码漫谈几秒前
Spring Boot 配置指南:约定大于配置的应用
java·spring boot·后端
黎雁·泠崖2 分钟前
二叉树遍历:LeetCode 144 / 94 / 145 之递归 + 分治 + 非递归
java·数据结构·算法·leetcode
凌波粒3 分钟前
LeetCode--347.前 K 个高频元素(栈和队列)
java·数据结构·算法·leetcode
GLPerryHsu3 分钟前
jar包的快速修改和重新发布
java·jar
2301_817672266 分钟前
如何在 HTML 中正确使用 exif-js 库读取图片 EXIF 元数据
jvm·数据库·python
程序员老邢7 分钟前
【技术底稿 14】通用文件存储组件:SpringBoot 自动装配 + 多存储适配
java·spring boot·后端·阿里云·微服务·策略模式
2401_832635588 分钟前
如何用 credentials 参数决定 Fetch 是否携带本地的 Cookie
jvm·数据库·python
粉嘟小飞妹儿9 分钟前
mysql如何通过防火墙保护MySQL权限_MySQL网络层安全配置
jvm·数据库·python
2301_8035389511 分钟前
如何高效批量删除SQL数据_使用脚本分段删除降低压力
jvm·数据库·python
2401_8971905513 分钟前
MySQL升级导致排序规则变化怎么处理_更新Collation配置
jvm·数据库·python