调用了一个对象的具有返回值的方法却没有赋值操作,如何解决内存泄漏的问题
class A{
public aaaa func()
{
aaaa n=new aaaa(123)
return n;
}
}
public int main()
{
A a=new A();
while(true)
{
a.func();
if(condition)
break;
}
}
如何解决这个问题?因为我既需要调用func();又不想将其返回值赋给某个变量,因为那样同样会造成内存泄漏,不进行赋值的调用大概持续数秒钟程序就崩溃了,其内存占用如图所示:
幸好A类具有Dispose函数,目前知道的可以通过编译和运行的办法是
public int main()
{
A a=new A();
while(true)
{
aaaa temp=a.func();
if(condition)
break;
temp.Dispose();
}
}
虽然运行无问题,也没有内存泄漏,但副作用是很耗资源,不一会儿电脑就会卡死,直到执行完毕才好
各位大侠,以上的问题该如何解决?
请注意,我是无法编辑A类的代码的,因此我无法将func()的返回值改为空,上面的代码是为了描述问题
另外想问下,有没有办法在不知道代码的情况下,能否继承A类将func的返回值改为空(其他代码不动)? --------------------编程问答--------------------
public void tescRAM()
{
int count = 0;
while (count<20000)
{
try
{
Bitmap a = new Bitmap("d:/a.bmp");
count++;
}
catch
{
MessageBox.Show(count.ToString());
break;
}
//a.Dispose();
}
MessageBox.Show("over");
}
为何函数调用结束也不进行内存回收呢?一定要关闭程序才算完。。。
--------------------编程问答-------------------- 怎么可能会“内存泄露”呢。 --------------------编程问答-------------------- 感觉楼主说的都是自以为的事情,出例子,别空口说。 --------------------编程问答--------------------
确实会发生泄漏的,具体表现就是调试的时候不到一会儿,大概数秒钟就崩溃了 --------------------编程问答--------------------
例子已经给出了,你可以试一下,我6G的内存都撑不了几秒钟。。。 --------------------编程问答-------------------- 先搞清楚是什么内存泄漏然后在说问题
你这并不是内存泄漏,至于为啥崩溃很容易解释,你在不停的往内存里写数据,有多大内存都不行
至于没有及时释放,是因为GC也并不是时时刻刻都应该出来滴,如果GC时时刻刻都占着cpu,额你还编啥程序,你编出来也运行不了,因为GC占着了
在说句体外话,你在主线程里阻塞,并不间断写数据到内存,不卡死就比较奇怪 --------------------编程问答--------------------
解决不了,因为你明知道这是个死循环、就算是100G内存也会崩溃,而你故意在这里撒娇。 --------------------编程问答--------------------
调用GC之类的,其实针对某些人来说都是下下策。我觉得最关键地是问:你这个循环程序是闲着没事写出来的?还是非要这样写? --------------------编程问答--------------------
您看了我这个问题应该能猜到http://bbs.csdn.net/topics/390655632
因为我现在在做一个跟视频有关的程序,目的是提取视频的指定帧,我选择使用aforge.Video.FFmpeg来读取,但是读取视频的函数只有readvideoframe();
只能用这个方法来获取Bitmap videoFrame = reader.ReadVideoFrame();但是我只想要我指定的一些帧,ReadVideoFrame()方法不提供直接直接读取指定帧的功能,因此不得不一帧一帧的使用ReadVideoFrame()往下读。如果不使用Bitmap videoFrame = reader.ReadVideoFrame();再videoFrame.Dispose();,而是直接用reader.ReadVideoFrame();这样的话,如帖中所说,程序会在几秒内崩溃,所以才有了以上提问。 --------------------编程问答-------------------- 内存泄露,开什么玩笑,楼主不要乱说。 --------------------编程问答-------------------- 擦!一看吓一跳 。 --------------------编程问答-------------------- 顶上去求解答呀
补充:.NET技术 , C#