C# 这样要如何释放资源?还是直接=null?
classA{privatList<String>_list//有很多个这样的Llist还有Directory~但是类型都是String啊,Int等等~自带类型~还有自定...
class A
{
privat List<String> _list
//有很多个这样的Llist还有Directory~但是类型都是String啊,Int等等~自带类型~
还有自定义的类
privat Myclass _class;
public A()
{
_list=new XXX
_class=new XXX
//构造函数初始化这些变量~
}
}
public class Myclass
{
//里面也是一些private的String,int之类的~还有些List<String>
//并且在构造函数里面new了~
}
假设我在另一个类里面~
public class KUKU
{
private A a;
public build()
{
a=new A();
}
public dispose()//这个如何释放a?直接a=null就行了吗?
{
a=null;//这个如何释放a?直接a=null就行了吗?
}
} 展开
{
privat List<String> _list
//有很多个这样的Llist还有Directory~但是类型都是String啊,Int等等~自带类型~
还有自定义的类
privat Myclass _class;
public A()
{
_list=new XXX
_class=new XXX
//构造函数初始化这些变量~
}
}
public class Myclass
{
//里面也是一些private的String,int之类的~还有些List<String>
//并且在构造函数里面new了~
}
假设我在另一个类里面~
public class KUKU
{
private A a;
public build()
{
a=new A();
}
public dispose()//这个如何释放a?直接a=null就行了吗?
{
a=null;//这个如何释放a?直接a=null就行了吗?
}
} 展开
1个回答
展开全部
对于new出来的东西,自己有dispose方法,不需要你自己实现。
另外,C#有垃圾回收处理,一般不需要自己释放,局部变量方法结束自然就释放了。全局的或者多form时,才需要按需要自己释放。
另外,C#有垃圾回收处理,一般不需要自己释放,局部变量方法结束自然就释放了。全局的或者多form时,才需要按需要自己释放。
追问
像上面那样的话~我直接就不用写=null了吗?
如果玩家一直调用build()方法~会不会内存溢出?
追答
这要看你的处理机制了,如果你的处理比较慢,比如五分钟才结束,而一次要10M的内存,那么有人在五分钟内调用了1000次,你系统肯定溢出。可如果你一次只要几KB,那就不会出问题了。重点还是你这个东西是不是局部的,或者单独在一个线程里。这两种情况,用完了会马上被释放。否则系统可能会无法判断是否要释放,这种就得你自己释放。
如果你代码写的合适,再出现内存溢出的问题,那就是压力测试的时候需要考虑的了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询