使用zgc导致linux平台下top命令显示内存占用超过100%

背景

手头有一个流式计算项目,特点是高吞吐且对延时敏感,heap大小在50G左右,原先使用的G1GC在高峰期的gc时间长达30s以上,对下游业务造成了干扰。

经过多次调优,仍然不理想,因此尝试使用JDK11的ZGC优化performance。经过初步试运行,ZGC在同样吞吐量的情况下,能够有效缩减STW时间,提升效率。

但运行中发现一个问题,当我们使用top命令查看程序运行情况时,发现如下的现象,程序占用的%MEM超过了100。

 

原因

由于程序运行正常,操作系统也没有运行其它程序,因此我们猜测可能是ZGC相关的特性导致了这一反常现象的出现。

通过搜索,找到如下解释:

https://stackoverflow.com/questions/57899020/zgc-max-heap-size-exceed-physical-memory

https://stackoverflow.com/questions/62926652/the-java-zgc-garbage-collector-uses-a-lot-of-memory

简单来说,zgc采用了指针染色技术以提升gc效率,对于堆内存有三种view("marked0", "marked1", "remapped"),因此使用top查看的内存大小约为jvm堆大小的3倍。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值