gpt4 book ai didi

Java 8 字符串重复数据删除与 String.intern()

转载 作者:太空狗 更新时间:2023-10-29 22:34:48 24 4
gpt4 key购买 nike

我正在阅读 Java 8 update 20 中的字符串重复数据删除功能 (more info),但我不确定这是否基本上使 String.intern() 过时了。

我知道这个 JVM 功能需要 G1 垃圾收集器,这对很多人来说可能不是一个选择,但是假设一个人正在使用 G1GC,JVM 完成的自动重复数据删除有什么区别/优势/劣势与必须手动 intern 您的字符串 相比(一个明显的优点是不必通过调用 intern() 来污染您的代码)?

考虑到 Oracle 可能使 G1GC 成为 Java 9 中的默认 GC,这尤其有趣

最佳答案

有了这个特性,如果你有 1000 个不同的字符串对象,所有对象都具有相同的内容 "abc",JVM 可以让它们在内部共享相同的 char[]。但是,您仍然有 1000 个不同的 String 对象。

使用 intern(),您将只有一个 String 对象。因此,如果您关心节省内存,intern() 会更好。它将节省空间和 GC 时间。

但是,intern() 的性能不是很好,我上次听说。拥有自己的字符串缓存可能会更好,甚至使用 ConcurrentHashMap ... 但您需要对其进行基准测试以确保。

关于Java 8 字符串重复数据删除与 String.intern(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32854968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com