none
请教下垃圾回收的问题 RRS feed

  • 问题

  • 比如ClassA是非托管的资源,ClassB里包含一个ClassA的对象,那么ClassB实现IDisposable接口后,在Dispose方法里把ClassA对象的引用设为null就实现了垃圾回收?谢谢。
    2009年10月1日 5:37

答案

全部回复

  • 您好,应调用ClassA的Dispose()或Close()方法。
    设置为null只是把ClassA放到垃圾回收队列中,并不能马上释放,仍会占用宝贵的资源。

    通常ClassA都会实现IDisposable接口,因此也可以采用Using的语法来操作例如数据库连接就是个例子。可以参考:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.aspx
    • 已标记为答案 CatLeo 2009年10月1日 6:18
    2009年10月1日 5:49
  • 多谢指教。
    2009年10月1日 6:18
  • 推荐你Applied Microsoft .NET Framework Programming这本书的第19章
    详细讲解了垃圾回收,内存自动管理算法..
    有人说,充满技术的生活枯燥无味.. 我笑他们不懂.因为只有技术才能充实生活.. 学习就像生活,都需要善于总结,才能发现问题,取得进步.. 生活中充满了数学算式与结构,只要我们善于观察和思考..
    2009年10月3日 14:36