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

2022-04-29 16:55:34 +08:00
 asanelder

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

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

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

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

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

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

1682 次点击
所在节点    Java
7 条回复
secondwtq
2022-04-29 16:59:14 +08:00
不要把时间浪费在 “GC 调优”这种落后又没用的八股文上
FreeEx
2022-04-29 17:18:11 +08:00
有一点你说错了,如果你用的监控是 Prometheus ,还是有流量的,监控数据是定期查询接口获取到的。
alen0206
2022-04-29 17:22:08 +08:00
@secondwtq 为什么这么说呢
chendy
2022-04-29 17:30:39 +08:00
因为即使不接请求,也有后台线程在跑,也有新对象产生,也进 eden ,eden 满了就 gc
印象里 dump 或者 mat 分析的时候,对于 gc root 访问不到的对象会做清理不会收集,所以看着也是一样的
zmal
2022-04-29 17:41:05 +08:00
@alen0206 因为 GC 调优是整体调优的末末端。而且 G1 和 ZGC 已经没啥参数可调了。了解 GC 原理还是很有价值的。
bthulu
2022-04-30 08:56:48 +08:00
以后 gc 调优怕是要在线修改 jvm gc 代码了
turnrut
2022-04-30 20:25:44 +08:00
定期上报 jvm 指标不会产生新对象么?
mat 设置里保留不可达对象,应该能看到不同

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/850067

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX