Java 求解答:为什么 JackSon 和 fastJson 里使用 string.intern,欢迎美团技术团队解答:-)

2022-08-08 21:16:31 +08:00
 badboy17

问题:使用 string.intern 可以节省时间吗,可以节省空间吗?

前段时间,迁移容器化之后发现机器的 youngGc 时间缓慢上涨,从几十毫秒涨到了几百毫秒,然后出发 full gc 之后,youngGc 时间又重新回落到几十毫秒 后来确定了是系统产生了很多的不同字符串的 key ,同时 jackSon 的 internCache 调用了 string.intern()方法,导致了字符串常量池 stringTable 膨胀,最终导致 YoungGc 扫描变慢

看了下美团技术团队里写道,fastJson 里使用了 string.intern,可以大大减少时间和空间,不太理解为什么可以节省时间,节省空间我能够理解,但是使用 string.intern ,不是更加的耗时吗?

https://tech.meituan.com/2014/03/06/in-depth-understanding-string-intern.html

3276 次点击
所在节点    Java
22 条回复
badboy17
2022-08-09 16:59:10 +08:00
@zmal 这个问题很多人遇到过
badboy17
2022-08-09 17:03:49 +08:00
@L0L FullGc 会回收,但是 yougGc 不会,YoungGc 的确需要扫描字符串常量池

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

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

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

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

© 2021 V2EX