问题描述
我在C#中了解到,当我连接2个字符串创建一个新对象时,该字符串是不可变的。 内存中的先前对象会发生什么? 创建新对象后,GC是否会立即删除旧对象?
解决方法
当您修改字符串的值时,即您正在创建一个新对象,该对象引用该修改过的字符串,而旧对象变为未引用。 因此,如果我们不断修改现有字符串,则未引用对象的数量将增加,并且它将等待垃圾回收器释放未引用对象。 运行垃圾收集器时,它将回收未引用对象占用的所有未使用内存。
我在C#中了解到,当我连接2个字符串创建一个新对象时,该字符串是不可变的。 内存中的先前对象会发生什么? 创建新对象后,GC是否会立即删除旧对象?
当您修改字符串的值时,即您正在创建一个新对象,该对象引用该修改过的字符串,而旧对象变为未引用。 因此,如果我们不断修改现有字符串,则未引用对象的数量将增加,并且它将等待垃圾回收器释放未引用对象。 运行垃圾收集器时,它将回收未引用对象占用的所有未使用内存。