private void button1_Click(object sender, System.EventArgs e)//构造对象
{
  for(int i=0;i<=10000000-1;i++)
  {
a[i]=new jwt();
   }
}
private void button2_Click(object sender, System.EventArgs e)//销毁对象
{
  for(int i=0;i<=10000000-1;i++)
  {
     a[i].Dispose();

  }
GC.Collect();
a[0].a=a[1].a;//没出错说明对象未被销毁
}
public class jwt:IDisposable//类
{
public int a=0;
public jwt()
{
 a=1;
     }
public void Dispose()
{
 GC.SuppressFinalize(this);
     }
~jwt()
{
     }
}以上代码对象构造后占用170M内存 可是执行完"销毁对象"内代码后 内存依然无变化
请问如何才能显式的销毁对象

解决方案 »

  1.   

    本公司为推广宣传公司产品,诚聘网络推广员。条件不限,只要家中有电脑,或者上班能上网的工作职员,会发邮件会利用QQ联系业务,宣传广告,信息发布,论坛发贴等方法宣传,有高额提成回报。可利用业余时间兼职,根据业绩每月最高可获报酬3000元左右。 详情请登陆:http://897288.com/?id=whui进入网站后可以点击网站上的“运作模式”,若有信心推广此网站,请联系每天8小时在线客服QQ:704757003。正式录用后赠送正版QQ好友群发软件和宣传资料。由于咨询者较多,请先看完网站内容后再做咨询,谢谢合作!
      

  2.   

    a[i]是指向jwt的引用,你只销毁a[i]不行。虽然现在无引用指向jwt,但是没调用析构函数的话,就无法清理内存。
      

  3.   

    GC.SuppressFinalize(this);
    msdn的解释是Requests that the system not call the finalizer method for the specified object.
    你调用a[i].Dispose()并没有销毁对象,通常Dispose()用来让用户手工销毁非托管对象,这样避免等到GC来释放.你的a为全局变量,未到生命周期结束,故a[0].a=a[1].a不会出错