网站首页 > 博客文章 正文
对于JVM 的总结-希望能帮到那些正在求职的同学,我是花了很多晚上来总结出来的思维导图的;
主要是从以下几方面来说明jvm
1 什么是JVM -简明 一台运行java程序的计算机;一台计算机
2 GC 回收算法
标记清除
标记压缩
拷贝
3 什么是垃圾
单个对象或者多个对象未被引用的成为垃圾
4 怎么找垃圾
ROOT引用计数法
Root Search根节点
5 回收器
Serial
年轻代 串行 回收 单线程
Serial Old
年老代 回收
PS
年轻代 并发回收
Parallel Old
ParNew
年轻代 回收 配合CMS
CMS
三色标记算法 increatement update 增量更新
ConcurrentMarkSweep 老年代 并发的, 垃圾回收和应用程序同时运 行,降低STW的时间(200ms) CMS问题比较多,所以现在没有一个版 默认是CMS,只能手工指定 CMS既然是MarkSweep,就一定会有碎 片化的问题,碎片到达一定程度,CMS的老年代分配对象分配不下的 时候,使用SerialOld 进行老年代回收
产生 空间碎片 跟 浮动垃圾
回收过程 初始标记 并发标记 重新标记 标记清理 主要的4个
吞吐量优先
G1
三色标记算法 SATB
响应时间优先
ZGC
Shenandoah
Eplison
6 类加载加载机制
loading 加载
linking 连接
initinlaziing 初始化
7 java 内存区域
pc寄存器
存放pc指令
frame 栈
local variable table 本地变量表
operat stack 操作栈
dynamic linking
return address
heap 堆
虚拟机管理的内存最大的一块 所有线程空享区域;堆可划分为 新生代 Xmn 指定年老代 Xmx Xms 指定
方法区 method Area
jdk1.7 字符串常量存放的 启动的时候指定大小 不会变 xss 配置 fGC不会清理
meatspeace 字符串 存放在堆中 最大受限于 物理内存大小 fgc 会触发回收
director memory
jdk1.4将nio io的一些内存分配到直接内存
runtime constant pool
用于存放编译期生成的 各中字面量和符号引用 这部分存放运行时的常量池
native method stack
只要服务于虚拟机执行的native方法
对象的内存布局
普通对象
markword 对象头 8 字节
无锁 状态 未锁定 标志位 01 存储内容 对象的IdentityHashCode 和 对象 的分代年龄
偏向锁 偏向线程id 偏向时间戳 对象的分代年龄 标志位 01 可偏向
轻量级锁 指向锁记录的指针 标志位 00 轻量级锁定
gc标记 空 不需要指定记录信息 标志位 11
重量级 状态 重量级锁定 标志位 10
class point
对象指针 -XX:+UseCompressedClassPointers 为4字节 不开启为8字节
padding
对齐 8字节的倍数 作用 占位符
instance data
引用类型: xx:+UseCompressedOops 压缩 4个字节不开启是 8个字节
解释下 oops ordinary Object Points
数组对象
markword 对象头 8 字节
ClassPoint 指针
数组长度 4
pedding 对齐 8 倍数
8 排查JVM异常
运维团队告知报警
top /top -Hp
jps 定位进程
jstack 定位线程情况 重点关注 Waiting Blocking
jinfo pid
jstat -gc 动态观察gc情况
jstat -gc 4655 500
arthas观察 / jconsole/jvisualVM/ Jprofiler 查看dump日志文件的
jmap - histo 4655 | head -20,查找有多少对象产生
arthas 阿里的排查工具有必要了解
Arthas
dashboad
thread
jvm
jad
猜你喜欢
- 2024-09-18 3分钟搞清楚 JVM逃逸分析(java 逃逸对象)
- 2024-09-18 天天都是面对对象编程,你真的了解你的对象吗?
- 2024-09-18 做JAVA开发的同学一定遇到过的爆表问题,看这里解决
- 2024-09-18 线上一次fullgc搞得鸡飞狗跳后,我总结了这篇文章
- 2024-09-18 Java中的对象都是在堆上分配的吗?
- 2024-09-18 jvm 相关的线上问题,内存使用率飙升到 90%+ 等 处理手段
- 2024-09-18 JVM入门第2部分-调试内存问题(jvm内存调优方法)
- 2024-09-18 互联网大厂面试系列-面试被问到什么是JVM的逃逸分析?
- 2024-09-18 内存溢出OutOfMemoryError科普系列一
- 2024-09-18 读Java性能权威指南(第2版)笔记11_堆内存上
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)