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内存 可是执行完"销毁对象"内代码后 内存依然无变化
请问如何才能显式的销毁对象
{
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内存 可是执行完"销毁对象"内代码后 内存依然无变化
请问如何才能显式的销毁对象
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不会出错