Class1 myObject=new Class1();
myObject.method1();
myObject=null;
这样释放资源可以吗?还有其它什么好方法吗?
7 个解决方案
#1
dispose
GC
GC
#2
对象的Dispose()方法!
#3
如果按楼上两位说的,代码要改成这样吗?
Class1 myObject=new Class1();
myObject.method1();
myObject.Dispose();
是这样释放myOject对象吗?Dispose()方法不应该这样用吧。
Class1 myObject=new Class1();
myObject.method1();
myObject.Dispose();
是这样释放myOject对象吗?Dispose()方法不应该这样用吧。
#4
不光是有Dispose(),还有Finalize()、GC.Collect(),
不过.net有垃圾收集机制,如果不是很有必要,不要使用这些,实际上就算调用了上面三个方法中的前两个,该对象也不一定就马上释放掉了,只不过是把它的垃圾收集的优先级提高了,在下一次收集的时候就会释放掉,而GC.Collect()是立即释放资源(收集垃圾),但不释放指定的资源。
不过.net有垃圾收集机制,如果不是很有必要,不要使用这些,实际上就算调用了上面三个方法中的前两个,该对象也不一定就马上释放掉了,只不过是把它的垃圾收集的优先级提高了,在下一次收集的时候就会释放掉,而GC.Collect()是立即释放资源(收集垃圾),但不释放指定的资源。
#5
谢谢楼上! 那么您认为下面代码的第三行应该写成什么好呢?谢谢!
1. Class1 myObject=new Class1();
2. myObject.method1();
3.
1. Class1 myObject=new Class1();
2. myObject.method1();
3.
#6
谢谢楼上! 那么您认为下面代码的第三行应该写成什么好呢?谢谢!
1. Class1 myObject=new Class1();
2. myObject.method1();
3.
1. Class1 myObject=new Class1();
2. myObject.method1();
3.
#7
如果你的对象很大的话,可以先Dispose(),然后GC.Collect()
1. Class1 myObject=new Class1();
2. myObject.method1();
3. myObject.Dispose();//前提是你的Class1继承了IDispose接口
4. myObject = null;
5. GC.Collect();
建议你一般不要这样做,因为频繁的收集垃圾对系统的性能有很大的影响的
1. Class1 myObject=new Class1();
2. myObject.method1();
3. myObject.Dispose();//前提是你的Class1继承了IDispose接口
4. myObject = null;
5. GC.Collect();
建议你一般不要这样做,因为频繁的收集垃圾对系统的性能有很大的影响的
#1
dispose
GC
GC
#2
对象的Dispose()方法!
#3
如果按楼上两位说的,代码要改成这样吗?
Class1 myObject=new Class1();
myObject.method1();
myObject.Dispose();
是这样释放myOject对象吗?Dispose()方法不应该这样用吧。
Class1 myObject=new Class1();
myObject.method1();
myObject.Dispose();
是这样释放myOject对象吗?Dispose()方法不应该这样用吧。
#4
不光是有Dispose(),还有Finalize()、GC.Collect(),
不过.net有垃圾收集机制,如果不是很有必要,不要使用这些,实际上就算调用了上面三个方法中的前两个,该对象也不一定就马上释放掉了,只不过是把它的垃圾收集的优先级提高了,在下一次收集的时候就会释放掉,而GC.Collect()是立即释放资源(收集垃圾),但不释放指定的资源。
不过.net有垃圾收集机制,如果不是很有必要,不要使用这些,实际上就算调用了上面三个方法中的前两个,该对象也不一定就马上释放掉了,只不过是把它的垃圾收集的优先级提高了,在下一次收集的时候就会释放掉,而GC.Collect()是立即释放资源(收集垃圾),但不释放指定的资源。
#5
谢谢楼上! 那么您认为下面代码的第三行应该写成什么好呢?谢谢!
1. Class1 myObject=new Class1();
2. myObject.method1();
3.
1. Class1 myObject=new Class1();
2. myObject.method1();
3.
#6
谢谢楼上! 那么您认为下面代码的第三行应该写成什么好呢?谢谢!
1. Class1 myObject=new Class1();
2. myObject.method1();
3.
1. Class1 myObject=new Class1();
2. myObject.method1();
3.
#7
如果你的对象很大的话,可以先Dispose(),然后GC.Collect()
1. Class1 myObject=new Class1();
2. myObject.method1();
3. myObject.Dispose();//前提是你的Class1继承了IDispose接口
4. myObject = null;
5. GC.Collect();
建议你一般不要这样做,因为频繁的收集垃圾对系统的性能有很大的影响的
1. Class1 myObject=new Class1();
2. myObject.method1();
3. myObject.Dispose();//前提是你的Class1继承了IDispose接口
4. myObject = null;
5. GC.Collect();
建议你一般不要这样做,因为频繁的收集垃圾对系统的性能有很大的影响的