性能问答>ygc耗时随着时间缓慢增长>
10回复
2年前

ygc耗时随着时间缓慢增长



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

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

5310 阅读
请先登录,再评论

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

2年前
回复 言风:

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

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

2年前回复
回复 DavidTsai:

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

2年前回复
回复 言风:

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

2年前回复
查看更多

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

2年前
回复 风中追风:

执行之后ygc立马就下降了

2年前回复