![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 87
ZyyIsPig
这个作者很懒,什么都没留下…
展开
-
CMS垃圾收集
需要暂停所有的其他线程,但这个阶段会很快完成。它的目的是,不会遍历对象关系,。原创 2024-03-08 00:12:57 · 1063 阅读 · 0 评论 -
三色标记过程
GC过程中需要对对象图遍历做可达性分析。使用了三色标记法进行分析。白色:尚未访问过。黑色:本对象已访问过,而且本对象 引用到 的其他对象 也全部访问过了。灰色:本对象已访问过,但是本对象 引用到 的其他对象 尚未全部访问完。全部访问后,会转换为黑色。1.初始时,所有对象都在 【白色集合】中;2.将GC Roots 直接引用到的对象 挪到 【灰色集合】中;3.从灰色集合中获取对象:3.1. 将本对象 引用到的 其他对象 全部挪到 【灰色集合】中;原创 2024-03-05 23:56:58 · 1167 阅读 · 0 评论 -
JVM垃圾回收算法
1.手动内存管理什么是手动内存管理?如果要存储共享数据, 必须显式地进行 内存分配(allocate)和内存释放(free)。如果忘记释放, 则对应的那块内存不能再次使用,即内存泄漏。如果程序很长,或者结构比较复杂, 很可能就会忘记释放内存。因此,业界迫切希望有一种更好的办法,来自动回收不再使用的内存,完全消除可能的人为错误。这种自动机制被称为垃圾收集。2.引用计数针对每个对象,只需要记录被引用的次数,当被引用次数变为0时就可以安全回收。如果有循环引用的情况,会导致对象无法回收。需要专门对循环引用的对象原创 2024-03-04 00:01:12 · 932 阅读 · 0 评论 -
15 ZGC和shenandoah
(4)让 GC 与业务线程“并发”执行,例如增加并发标记,并发清除等阶段,从而把暂停时间控制在非常短的范围内(目前来说还是必须使用少量的 STW 暂停,比如根对象的扫描,最终标记等阶段);1.像 G1 和 ZGC 之类的现代 GC 算法,只要空闲的堆内存足够多,基本上不触发 FullGC。4.内存整理,也就是重定位的过程是并发执行的,用到了我们前面说到的“读屏障”。2.更小粒度的内存块划分,也就允许增量垃圾收集的实现,意味着暂停的时间更短。空闲18位,标识位4位,地址位42位,2^42即4TB。原创 2024-02-21 00:23:49 · 167 阅读 · 0 评论 -
CMS如何调优
原则是先止损,再排查。FGC的原因是对象晋升失败或者并发模式失败,原因都是了。1.可能是大对象导致的内存泄漏。:观察数据库网络IO是否和FGC时间点吻合,找到对应的SQL和代码。分析内存dump。可以使用jvisualvm查看,需要了解分析工具中指标的含义,。2.可能是内存泄漏。排查方法:(1)查看老年代内存使用情况,如果则可能是内存泄漏,代码有问题。(2)分析监控,是否的。分析内存堆栈。在Java中,如果发生内存泄漏,会导致GC回收不彻底,每次GC后,。原创 2024-01-23 23:38:06 · 452 阅读 · 0 评论