首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么字符串重复不规范?

为什么字符串重复不规范?
EN

Stack Overflow用户
提问于 2019-08-14 08:40:28
回答 1查看 3K关注 0票数 1

在我的应用程序中导入csv文件创建1000万个对象时,我遇到了问题。在做堆转储时,我发现当达到480万个对象时会出现内存不足的情况。

研究一种解决方案并研究如何改进GC --我偶然发现了VMOption:

代码语言:javascript
复制
-XX:+UseStringDeduplication

使用它,我能够在内存不足之前创建780万个对象,增加了60 %以上。堆转储显示,堆中的字符串和byte[]最多减少75 %。

在另一个堆栈溢出答案中,有人在内存使用优化方面显示了类似的结果。https://stackoverflow.com/a/27953779/10020419

所以我问自己,为什么这不是标准(我使用的是Java 11)?

我所读到的唯一的缺点更像是CPU的更小的增加,因为GC必须工作得更多一点。

是否有任何其他理由不将其用作默认设置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-14 08:45:26

当我们问“为什么这个语言决定要做出”时,我们所能做的就是猜测或倾听语言设计者公开说的话。我还没有听到开发人员对他们为什么这么做的任何评论,所以这里有一个比较有教养的猜测。

  • 在大多数情况下,CPU是比内存更宝贵的资源。
  • 此标志需要G1垃圾收集器,这可能不适用于某些人。如果默认情况下是打开的,您可能会切换到另一个GC,并发现现在到处都是OOM错误。

就像我说的,没有来自开发者的明确评论,有教养的猜测是第二件最好的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57491102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档