首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

GC垃圾回收的有关问题

2012-04-11 
GC垃圾回收的问题string saaasnullGC.Collect()//是不是把s回收了?spp//如果我加上这一句,为什

GC垃圾回收的问题
string s="aaa";
s=null;
 GC.Collect();
//是不是把s回收了?
s="pp";//如果我加上这一句,为什么s还能用?

[解决办法]
string是引用类型;
string s="aaa"; 这句应该是在堆栈上分配一个地址变量;然后在托管堆中分配一个对象,将将堆栈中的地址指向它;
s=null; 将原本指向“aaa"的引用指向一个空引用,但堆栈上的变量还在;
s="pp"; 重新指向一个新引用;
[解决办法]
GC.Collect()只是告诉垃圾收集器,要进行收集,是否回收,取决于垃圾收集器。


[解决办法]
具体垃圾收集机制可以读一读msdn. 说实在的我也没有仔细读过。。。。

http://msdn.microsoft.com/en-us/library/ee787088.aspx

热点排行