gee*_*hic 5 .net vb.net garbage-collection
我一直在读.NET中的垃圾收集,我希望得到一些澄清.所以,据我所知,如果我声明一个公共共享类变量,GC将永远不会摆脱它.它是否正确?
那么,私有变量呢?请看以下示例:
public class myClass
private shared myString As String
public sub ChangeString(newString As String)
myString = newString
end sub
end class
Run Code Online (Sandbox Code Playgroud)
如果没有类的实例,共享变量现在会得到GC吗?如果我将ChangeString改为共享子怎么办?
所以,据我所知,如果我声明一个公共共享类变量,GC将永远不会摆脱它.它是否正确?
几乎.GC不会清除共享变量引用的字符串.
但是,如果ChangeString使用新字符串调用,则指向的字符串myString将不再受此引用的影响,并且可能符合GC的条件.但是,新字符串(引用newString)现在将变为root myString变量,从而防止它被垃圾回收.
如果没有类的实例,共享变量现在会得到GC吗?
不.共享变量是对象的根,因为它由类的"类型"拥有,而不是任何实例.
如果我将ChangeString改为共享子怎么办?
这根本没有效果.
| 归档时间: |
|
| 查看次数: |
585 次 |
| 最近记录: |