求助>ygc耗时随着时间缓慢增长>
10回复
1月前

ygc耗时随着时间缓慢增长



目前我们一个服务,刚启动的时候,young gc耗时20毫秒左右,运行一天就到50毫秒了,重启后恢复正常,之后还会缓慢增长,该如何排查?
重启后gc日志:
WX20191215221755.png

重启11个小时后gc日志:
WX20191215221950.png

1811 阅读
请先登录,再评论

回复列表

言风1月前

问下最大ygc 耗时是多久,还有最好把jvm参数贴一下😊

DavidTsai1月前
回复 言风:

换fastjson新版本可以,我们是修改了Jackson代码

protected ObjectMapper mapper = new ObjectMapper(factory).setTimeZone(TimeZone.getDefault());

回复
言风1月前
回复 DavidTsai:

感谢反馈😋,这个问题是需要升级jackson 还是得更换别的json处理工具呢?

回复
DavidTsai1月前
回复 言风:

确实是String Table,我们切换了alijdk,加了参数-XX:+PrintGCRootsTraceTime ,打印了下gc分布时间,看到stringtable对比刚启动的时候明显增高,之后排查代码,发现只有Json那个地方有用到string转换,使用Jackson readValue触发的String.intern(),导致jvm stringtable膨胀。

回复
查看更多

执行一下 jmap -histo:live <pid> 试试,看 ygc 耗时是否会降低。JVM源码分析之String.intern()导致的YGC不断变长

DavidTsai1月前
回复 风中追风:

执行之后ygc立马就下降了

回复