作者tomex (tomex_ou)
看板C_Sharp
标题Re: [问题] 请问个c#观念问题
时间Thu Nov 10 17:03:37 2005
※ 引述《fillmore (.......................)》之铭言:
: class Form1
: {
: Form2 F2;
: public Form1()
: {
: F2 = new Form2(this);
: }
: }
: class Form2
: {
: Form1 F1;
: public Form2(Form1 ref)
: {
: F1 = ref;
: }
: }
: 请问Form1物件的F2 = null的时候
: 1.确实在记忆体中有清乾净吗?? (因为F2物件里面有Form1的参考,所以不知道会怎样)
: 2.如果没有清乾净那该如何清理呢?
: 3.或是两个不同的Form互有对方的参考又该如何清理?
1.
假如你已new Form1,它则产生Form1的记忆体(以下简称MM)使用,它放Form2,
而Form2本身只是具有一个Form1的指向,并没有实际的MM配置。
当F2=null时,GC会注记Form2物件的ref count - 1,等ref-count为0时
可能立即或等一会儿再回收MM资料
2.要确保会立即清乾净,就是实作Dispose()这介面方法
用F2.Dispose() 来代替F2=null。
3.不管怎样的参考,你只要回归Form1/Form2各自的Ref-Count现值
就可知道它们的回收状况。
--
贯彻分享精神
我为人人,人人为我
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.78.132.15