JVM
type
Post
status
Published
date
Mar 22, 2026
slug
jvm
summary
tags
category
Java Web
icon
password
Parent item
Sub-item
Place
JVM的体系结构
方法区:常量+静态变量都在这
栈:方法里里命名的基本数据类型和new出对象的引用(线程私有)
堆:new出来的对象都在这里,并且也是垃圾回收的地方

GC(Garbage Collection)
垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制。我们常说的GC指的是Full GC
根搜索算法(判断垃圾的算法)
从一组称为 "GC Roots" 的根对象出发,沿着引用链向下搜索。能被到达的对象是存活的,不能到达的就是垃圾。

堆内存

标记清除算法
最基础的算法,现在没有使用了,不过其他都是基于他改进的,

复制算法(Young)
优点:✅ 无内存碎片 → 存活对象紧凑排列 ✅ 速度快 → 只需要复制少量存活对象(年轻代存活率低) ✅ 实现简单 → 直接整块清空,不用逐个释放 缺点:❌ 浪费空间 → 始终有一个Survivor是空的(浪费10%) ❌ 存活对象多时效率低 → 复制太多对象会变慢(所以不适合老年代)
标记压缩清除算法

怎么移动的的呢?

JVM参数设置
需要的时候问大模型就行,没必要记
Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError
Xms1m:设置初始堆内存为 1MB。
Xmx8m:设置最大堆内存为 8MB。
XX:+HeapDumpOnOutOfMemoryError:在内存溢出时生成 Heap Dump 文件。
标记-清除 | 标记-压缩 | 复制 | ㅤ |
碎片 | 有 | 无 | 无 |
额外空间 | 几乎不需要 | 几乎不需要 | 大约一半堆 |
分配 | 空闲链表,较慢 | 指针碰撞,快 | 指针碰撞,快 |
回收代价 | 扫整堆(含死对象) | 多趟 + 搬对象,最重 | 只处理活对象,年轻代很合适 |
停顿 | 中等 | 往往最长 | 年轻代短,老年代空间浪费大 |
典型场景 | 并发老年代(如 CMS) | 空间紧、要去碎片的老年代 | 新生代(大部分对象朝生夕死) |
双亲委派机制
上一篇
ReAct
下一篇
Agent Skills
Loading...