在我的应用程序中导入csv文件创建1000万个对象时,我遇到了问题。在做堆转储时,我发现当达到480万个对象时会出现内存不足的情况。
研究一种解决方案并研究如何改进GC --我偶然发现了VMOption:
-XX:+UseStringDeduplication使用它,我能够在内存不足之前创建780万个对象,增加了60 %以上。堆转储显示,堆中的字符串和byte[]最多减少75 %。
在另一个堆栈溢出答案中,有人在内存使用优化方面显示了类似的结果。https://stackoverflow.com/a/27953779/10020419
所以我问自己,为什么这不是标准(我使用的是Java 11)?
我所读到的唯一的缺点更像是CPU的更小的增加,因为GC必须工作得更多一点。
是否有任何其他理由不将其用作默认设置?
发布于 2019-08-14 08:45:26
当我们问“为什么这个语言决定要做出”时,我们所能做的就是猜测或倾听语言设计者公开说的话。我还没有听到开发人员对他们为什么这么做的任何评论,所以这里有一个比较有教养的猜测。
就像我说的,没有来自开发者的明确评论,有教养的猜测是第二件最好的事情。
https://stackoverflow.com/questions/57491102
复制相似问题