zgc的Allocate stall原理
- zgc的内存管理分成两级管理模式:首先是分配内存页面,其次才是从内存页面中分配对象,
- Allocate stall发生在分配内存页面的阶段,与jvm的ZStallOnOutOfMemory(默认为true)参数密切相关,当ZStallOnOutMemory参数为false,此时分配内存页面,当时当前没有空闲的内存页面时,jvm就会直接抛出OutOfMemory异常。
- 当ZStallOnOutOfMemory为true时,此时如果内存页面分配失败,则产生一个阻塞的页面分配请求插入到请求队列的末尾,然后启动zgc垃圾回收,当zgc垃圾回收回收到空闲的页面空间时,就会把该页面分配给队列中阻塞等待的页面分配请求.
正常内存充足情况下应用线程的最大阻塞时间是初始标识,重新标识,初始转移中的最大值,然而当发生Allocate stall时,由于需要回收到空闲页面应用线程才能继续运行下去,所以应用线程需要等待一直到有空闲的内存页面为止,而这个时间一般需要经过:初始标识+并发标识+重新标识+清理 或者 初始标识+并发标识+重新标识+清理(假设这里没有页面完全都是垃圾对象) + 初始转移+并发转移 这些步骤之后,应用线程才能获取到空闲的页面继续运行。
Allocation stall对应的触发垃圾回收的方式是发送异步消息+循环等待的方式,区别于System.gc的发送同步消息的方式,两者的区别只是在这个过程中会不会主动让出cpu的问题.
以上所述,尽量不要让zgc进入到Allocate Stall中,如果发现了这个日志,需要调整zgc的参数(比如ZAllocationSpikeTolerance或者ZCollectionInterval),提早进行zgc的回收.
zgc的Allocate stall原理相关推荐
- 58同城 HBase 平台 ZGC 应用实践
导读 58同城大数据团队,鉴于目前线上大数据集群各个组件GC方面的问题,考虑逐步在适合的大数据组件上应用高版本JDK上的ZGC,目前已经在HBase集群上成功落地,在某些场景上有比较明显的效果.58同 ...
- G1和ZGC垃圾收集器
文章目录 G1垃圾收集器 定义 G1的优势 G1架构 G1 内存布局 G1可以让用户自己设置应用暂停时间,为什么可以做到这一点? G1 缺点 G1 GC模式 G1 Young GC Mixed GC ...
- 全类目,优惠码活动400减230明天最后
1024程序员节 当当网计算机图书 每满100减50! 满200减100! 满300-150! 机械工业出版社华章公司联合当当网特意为[Java乐园]用户申请了一批可与满减叠加使用的"满20 ...
- JVM原理之详解现代垃圾回收器 Shenandoah 和 ZGC
Shenandoah Shenandoah 一词来自于印第安语,十九世纪四十年代有一首著名的航海歌曲在水手中广为流传,讲述一位年轻富商爱上印第安酋长 Shenandoah 的女儿的故事. 后来美国有一 ...
- RCU检测CPU stall的原理
在系统中,有时可能会看到如下警告: INFO: rcu_sched self-detected stall on CPU 0-...: (9999 ticks this GP) idle=cee/14 ...
- 新一代垃圾回收器ZGC的探索与实践
很多低延迟高可用Java服务的系统可用性经常受GC停顿的困扰,作为新一代的低延迟垃圾回收器,ZGC在大内存低延迟服务的内存管理和回收方面,有着非常不错的表现. 本文从GC之痛.ZGC原理.ZGC调优实 ...
- c++ 多线程 垃圾回收器_新一代垃圾回收器ZGC的探索与实践
很多低延迟高可用Java服务的系统可用性经常受GC停顿的困扰,作为新一代的低延迟垃圾回收器,ZGC在大内存低延迟服务的内存管理和回收方面,有着非常不错的表现. 本文从GC之痛.ZGC原理.ZGC调优实 ...
- Tencent Kona JDK11无暂停内存管理ZGC生产实践
来源 | infoQ 作者 | 王超 策划 | 田晓旭 图片 | Pexels 腾讯大数据 JVM 团队基于 OpenJDK11 自研的 Tencent Kona JDK11,目前已将 ZGC 特性孵 ...
- 通过 JFR 与日志深入探索 JVM - TLAB 原理详解
全系列目录:通过 JFR 与日志深入探索 JVM - 总览篇 什么是 TLAB? TLAB(Thread Local Allocation Buffer)线程本地分配缓存区,这是一个线程专用的内存分配 ...
最新文章
- python django-forbidden-csrf-cookie-not-set问题
- 中两个数做减法_四年级数学下册 | 第1单元加、减法的意义和各部 分之间的关系(P13)...
- adguard没有核心 core no_面试官:线程池如何按照core、max、queue的执行顺序去执行?...
- android收货地址整理
- 为什么某些地方结婚彩礼那么高呢?而广东却很低甚至不需要?
- 2014-06-13 jq chart
- 华为辟谣将发布石墨烯电池手机;梁建章回应携程杀熟;GitLab 12.6 发布 | 极客头条...
- 【Java编译】含package的类文件编译
- Hibernate基于JAP注解开发
- LNMP搭建HDwiki
- OpenMMLab 实战营打卡 - 第 四 课 目标检测算法基础
- IDEA配置连接数据库时报错Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezone‘ propert
- 程序员能偷偷接私活的7大平台,老板:这下我全都知道了
- java 1.13 快照下载_Minecraft Java快照版18w15a下载
- 70.青蛙跳台阶(爬楼梯)
- SRPG游戏开发(三十一)第八章 游戏中的数据 - 一 创建新项目(Create New Project)
- css在ios和安卓上的兼容问题(持续更新)
- 职场中人自我认定的天涯精华帖(链接地址、读后感、经典语录)看完就更新
- 10月,5G发生了22件大事!
- 0xc0000005(无法正常启动0xc0000005)
热门文章
- 巨杉数据库(湖仓一体)荣登粤港澳大湾区金融科技飞鱼企业20强
- CM201-2-CH-Hi3798MV300/MV310-当贝纯净桌面卡刷固件包
- hangman猜字游戏
- C++类与对象(类中的六大默认成员函数)
- HTML三个常用代码-空格,标签,回车
- 【脱单秘籍,单身狗必看】如何变得会与异性聊天?
- word文档转换为PDF
- 动画中OAD OVA SP都是是什么?和TV动漫都有什么区别?
- hibernate中hbm.xmlmany-to-oneone-to-many中一些属性详解
- 李开复@GMIC:AI时代科学家该不该创业 | 全文+PPT