jvm 知识图谱
2021-02-21 22:07:39 34 举报
AI智能生成
为你推荐
查看更多
jvm 知识图谱
作者其他创作
大纲/内容
参数配置
子主题
-server
G1垃圾回收器
-XX:+UseG1GC
-XX:MaxGCPauseMillis
-XX:G1HeapRegionSize
-XX:MaxTenuringThreshold=n
-XX:InitiatingHeapOccupancyPercent
-XX:G1NewSizePercent
-XX:G1MaxNewSizePercent
-XX:ConcGCThreads
-XX:-XX:G1HeapWastePercent
-XX:G1MixedGCCountTarget
CMS垃圾回收器
-Xms2g
-Xmx2g
-Xmn256m
-Xss256k
-XX:+UseParNewGC
-XX:+UseCMSCompactAtFullCollection
-XX:CMSInitiatingOccupancyFraction=70
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:CMSFullGCsBeforeCompaction=3
GC范围
Young GC
只对年轻代进行回收
OLD GC
Mixed GC
Full GC
收集整个堆内存
触发条件
老年代没有足够连续内存存放大对象
从survicor晋升到老年代的平均大小 大于 老年代剩余大小时
调用System.gc() . 不一定会执行
Metaspace区内存达到阈值
JVM故障排查
CPU使用率高分析
top 命令查看cpu占比高的进程
top命令查看cpu占比高的线程
线程数过多分析
内存溢出分析
使用visual VM实时分析或者dump出来
jvm知识图谱
可达性分析
引用计数法
可达性分析算法
root对象
G1 回收器
G1之前的垃圾回收器STW时间会随着堆内存增加线性增加
分区
Eden
Survivor
Old
Humongous
young GC
Eden分区满了后触发
partially young GC
老年代占比超过设定值后就触发
JVM指令
iload
iadd
ipush
astore / istaore
ireturn
getfield/ putfield
invokevirtual / invokestatic
getstatic / putstatic
new / newarray
monitorenter / moniterexit
i++
内存DUMP
线程栈分析工具jvisualvm[jvm自带]jstack 进程号 > ziwei_01271604.tdump
类文件
类加载
内存分布
栈内存
由栈帧组成
栈帧
局部变量表
操作数栈
返回地址
堆内存
Metaspace
垃圾回收算法
标记清除
会产生内存碎片
标记整理
Parallel Old 回收器
复制算法
Serial / ParNew 回收器
Parallel Scavege回收器
浪费内存
分代算法
新生代默认大小占 1/3
Eden默认占: 8/10
survivor默认占: 1/10
老年代: 默认占 2/3大小
永久代:
垃圾回收器
G1回收器
JDK9后的默认回收器JDK7支持G1
CMS回收器
默认每隔两秒判断一次是否需要执行GC触发条件: 老年代达到92% ; 新生代晋升担保失败
长时间允许会导致严重的内存碎片;可以设置N次gc后进行一次压缩
清理过程
并发标记阶段
预清理阶段
Serial 回收器
新生代回收器
ParNew回收器
Serial多线程版本在单核或者双核情况下效果比Serial小
Parallel Scavenge
注重的是高吞吐量而不是停顿时间
Parallel Old
标记整理算法
内存监控工具
Visual VM
实时监控堆
分析 内存快照
GCEasy
在线分析GC日志
0 条评论
回复 删除
下一页