1. zgc的内存管理分成两级管理模式:首先是分配内存页面,其次才是从内存页面中分配对象,
  2. Allocate stall发生在分配内存页面的阶段,与jvm的ZStallOnOutOfMemory(默认为true)参数密切相关,当ZStallOnOutMemory参数为false,此时分配内存页面,当时当前没有空闲的内存页面时,jvm就会直接抛出OutOfMemory异常。
  3. 当ZStallOnOutOfMemory为true时,此时如果内存页面分配失败,则产生一个阻塞的页面分配请求插入到请求队列的末尾,然后启动zgc垃圾回收,当zgc垃圾回收回收到空闲的页面空间时,就会把该页面分配给队列中阻塞等待的页面分配请求.

正常内存充足情况下应用线程的最大阻塞时间是初始标识,重新标识,初始转移中的最大值,然而当发生Allocate stall时,由于需要回收到空闲页面应用线程才能继续运行下去,所以应用线程需要等待一直到有空闲的内存页面为止,而这个时间一般需要经过:初始标识+并发标识+重新标识+清理 或者 初始标识+并发标识+重新标识+清理(假设这里没有页面完全都是垃圾对象) + 初始转移+并发转移 这些步骤之后,应用线程才能获取到空闲的页面继续运行。

Allocation stall对应的触发垃圾回收的方式是发送异步消息+循环等待的方式,区别于System.gc的发送同步消息的方式,两者的区别只是在这个过程中会不会主动让出cpu的问题.

以上所述,尽量不要让zgc进入到Allocate Stall中,如果发现了这个日志,需要调整zgc的参数(比如ZAllocationSpikeTolerance或者ZCollectionInterval),提早进行zgc的回收.

zgc的Allocate stall原理相关推荐

  1. 58同城 HBase 平台 ZGC 应用实践

    导读 58同城大数据团队,鉴于目前线上大数据集群各个组件GC方面的问题,考虑逐步在适合的大数据组件上应用高版本JDK上的ZGC,目前已经在HBase集群上成功落地,在某些场景上有比较明显的效果.58同 ...

  2. G1和ZGC垃圾收集器

    文章目录 G1垃圾收集器 定义 G1的优势 G1架构 G1 内存布局 G1可以让用户自己设置应用暂停时间,为什么可以做到这一点? G1 缺点 G1 GC模式 G1 Young GC Mixed GC ...

  3. 全类目,优惠码活动400减230明天最后

    1024程序员节 当当网计算机图书 每满100减50! 满200减100! 满300-150! 机械工业出版社华章公司联合当当网特意为[Java乐园]用户申请了一批可与满减叠加使用的"满20 ...

  4. JVM原理之详解现代垃圾回收器 Shenandoah 和 ZGC

    Shenandoah Shenandoah 一词来自于印第安语,十九世纪四十年代有一首著名的航海歌曲在水手中广为流传,讲述一位年轻富商爱上印第安酋长 Shenandoah 的女儿的故事. 后来美国有一 ...

  5. RCU检测CPU stall的原理

    在系统中,有时可能会看到如下警告: INFO: rcu_sched self-detected stall on CPU 0-...: (9999 ticks this GP) idle=cee/14 ...

  6. 新一代垃圾回收器ZGC的探索与实践

    很多低延迟高可用Java服务的系统可用性经常受GC停顿的困扰,作为新一代的低延迟垃圾回收器,ZGC在大内存低延迟服务的内存管理和回收方面,有着非常不错的表现. 本文从GC之痛.ZGC原理.ZGC调优实 ...

  7. c++ 多线程 垃圾回收器_新一代垃圾回收器ZGC的探索与实践

    很多低延迟高可用Java服务的系统可用性经常受GC停顿的困扰,作为新一代的低延迟垃圾回收器,ZGC在大内存低延迟服务的内存管理和回收方面,有着非常不错的表现. 本文从GC之痛.ZGC原理.ZGC调优实 ...

  8. Tencent Kona JDK11无暂停内存管理ZGC生产实践

    来源 | infoQ 作者 | 王超 策划 | 田晓旭 图片 | Pexels 腾讯大数据 JVM 团队基于 OpenJDK11 自研的 Tencent Kona JDK11,目前已将 ZGC 特性孵 ...

  9. 通过 JFR 与日志深入探索 JVM - TLAB 原理详解

    全系列目录:通过 JFR 与日志深入探索 JVM - 总览篇 什么是 TLAB? TLAB(Thread Local Allocation Buffer)线程本地分配缓存区,这是一个线程专用的内存分配 ...

最新文章

  1. python django-forbidden-csrf-cookie-not-set问题
  2. 中两个数做减法_四年级数学下册 | 第1单元加、减法的意义和各部 分之间的关系(P13)...
  3. adguard没有核心 core no_面试官:线程池如何按照core、max、queue的执行顺序去执行?...
  4. android收货地址整理
  5. 为什么某些地方结婚彩礼那么高呢?而广东却很低甚至不需要?
  6. 2014-06-13 jq chart
  7. 华为辟谣将发布石墨烯电池手机;梁建章回应携程杀熟;GitLab 12.6 发布 | 极客头条...
  8. 【Java编译】含package的类文件编译
  9. Hibernate基于JAP注解开发
  10. LNMP搭建HDwiki
  11. OpenMMLab 实战营打卡 - 第 四 课 目标检测算法基础
  12. IDEA配置连接数据库时报错Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezone‘ propert
  13. 程序员能偷偷接私活的7大平台,老板:这下我全都知道了
  14. java 1.13 快照下载_Minecraft Java快照版18w15a下载
  15. 70.青蛙跳台阶(爬楼梯)
  16. SRPG游戏开发(三十一)第八章 游戏中的数据 - 一 创建新项目(Create New Project)
  17. css在ios和安卓上的兼容问题(持续更新)
  18. 职场中人自我认定的天涯精华帖(链接地址、读后感、经典语录)看完就更新
  19. 10月,5G发生了22件大事!
  20. 0xc0000005(无法正常启动0xc0000005)

热门文章

  1. 巨杉数据库(湖仓一体)荣登粤港澳大湾区金融科技飞鱼企业20强
  2. CM201-2-CH-Hi3798MV300/MV310-当贝纯净桌面卡刷固件包
  3. hangman猜字游戏
  4. C++类与对象(类中的六大默认成员函数)
  5. HTML三个常用代码-空格,标签,回车
  6. 【脱单秘籍,单身狗必看】如何变得会与异性聊天?
  7. word文档转换为PDF
  8. 动画中OAD OVA SP都是是什么?和TV动漫都有什么区别?
  9. hibernate中hbm.xmlmany-to-oneone-to-many中一些属性详解
  10. 李开复@GMIC:AI时代科学家该不该创业 | 全文+PPT