V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
asanelder
V2EX  ›  Java

[JVM]为什么 eden 区很周期性的达到 100%?

  •  
  •   asanelder · 2022-04-29 16:55:34 +08:00 · 1847 次点击
    这是一个创建于 937 天前的主题,其中的信息可能已经有所发展或是发生改变。

    俺写了一个简单的服务, 接入了监控, 没有流量.

    但看监控, eden 区会周期性的达到 100% usage, 然后触发 YGC.

    俺有点不明白, 这一点流量也没有, 为什么 eden 区会不断增加?

    服务是使用 springboot 搭建的 web 服务, 同时接入了监控向 influxdb 上报一些 jvm 指标.

    监控图如下, 20 分钟触发一次 YGC, 很规律.

    BelSHhd9@2x

    另: 俺把 YGC 之前和之后 Heap Dump 了出来, 使用 MAT 来比较不同, 没发现什么异样啊, 但是两个 heap 文件大小还是明显有差别...

    7 条回复    2022-04-30 20:25:44 +08:00
    secondwtq
        1
    secondwtq  
       2022-04-29 16:59:14 +08:00
    不要把时间浪费在 “GC 调优”这种落后又没用的八股文上
    FreeEx
        2
    FreeEx  
       2022-04-29 17:18:11 +08:00
    有一点你说错了,如果你用的监控是 Prometheus ,还是有流量的,监控数据是定期查询接口获取到的。
    alen0206
        3
    alen0206  
       2022-04-29 17:22:08 +08:00
    @secondwtq 为什么这么说呢
    chendy
        4
    chendy  
       2022-04-29 17:30:39 +08:00
    因为即使不接请求,也有后台线程在跑,也有新对象产生,也进 eden ,eden 满了就 gc
    印象里 dump 或者 mat 分析的时候,对于 gc root 访问不到的对象会做清理不会收集,所以看着也是一样的
    zmal
        5
    zmal  
       2022-04-29 17:41:05 +08:00
    @alen0206 因为 GC 调优是整体调优的末末端。而且 G1 和 ZGC 已经没啥参数可调了。了解 GC 原理还是很有价值的。
    bthulu
        6
    bthulu  
       2022-04-30 08:56:48 +08:00
    以后 gc 调优怕是要在线修改 jvm gc 代码了
    turnrut
        7
    turnrut  
       2022-04-30 20:25:44 +08:00
    定期上报 jvm 指标不会产生新对象么?
    mat 设置里保留不可达对象,应该能看到不同
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5291 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:08 · PVG 16:08 · LAX 00:08 · JFK 03:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.