在任何应用程序中,字符串消耗了很多内存。每当垃圾收集器访问字符串对象时,会注意到字符数组。它获取它们的哈希值并将其存储在一个弱引用到数组的旁边。一旦它找到另一个具有相同哈希代码的字符串,它将逐个比较它们的字符。如果它们也匹配,则一个字符串将被修改并指向第二个字符串的字符数组。第一个字符数组不再被引用,因此可以进行垃圾回收。
字符串池:
Java程序使用的所有字符串都存储在此处。如果两个变量初始化为相同的字符串值,则不会在内存中创建两个字符串,而只会存储一个副本,并且两者都将指向同一内存位置。
因此,Java已经通过检查字符串是否存在于字符串池中来避免在堆中创建重复字符串。那么,字符串去重的目的是什么?
如果有以下代码
String myString_1 = new String("Hello World");
String myString_2 = new String("Hello World");
即使两个字符串相同,它们在内存中也会创建两次。除此之外,我无法想到任何场景需要字符串去重复。显然,我一定漏掉了什么。那我错过了什么?
提前致谢。