11 个解决方案
#1
不仅仅是Dispose那么简单
首先在你的类首次实例化时,有没有考虑到从托管代码编译到本地代码的过程
释放的只是对象,但用到过的托管代码会缓存起来,使以后加载更快
想完全回收“18000K”不太可能
当然这只是一方面
首先在你的类首次实例化时,有没有考虑到从托管代码编译到本地代码的过程
释放的只是对象,但用到过的托管代码会缓存起来,使以后加载更快
想完全回收“18000K”不太可能
当然这只是一方面
#2
内存会在垃圾回收器认为合适的时候回收,如果你认为某个操作不是频繁发生的,可以调用
GC.Collect()
GC.WaitForFullGCComplete()
比如关闭窗体后,执行以上代码。
#3
郁闷,用IDispose不但没释放资源,还增加了几十K...加个GC.Collect就释放了,还是自己写Dispose算了,把一些变量设为Nothing还剩下10000K了,还8000K真的不能释放了么?
#4
你平常感觉到缺少这块内存吗?
这块内存其实不值几毛钱,只是一些自认为c语言学得好的人比不过别人编程和程序部署的效率只好比这个。
这块内存其实不值几毛钱,只是一些自认为c语言学得好的人比不过别人编程和程序部署的效率只好比这个。
#5
晕,资源释放完整些不好吗?我没那意思...
#6
http://www.w3school.com.cn/xpath/xpath_axes.asp
#7
?
#8
你的这部分内存恐怕没办法完全回收的,你的程序要运行是要依托.Net Framework的,这个东西也是要占用内存的。
#9
不见得一定是你的问题,尽管你把类里面的控件全部Dispose了,但这只意味着它们占用的内存允许被回收,而不意味着一定立即被回收,注意2楼那句"在垃圾回收器认为合适的时候回收"。
销毁自定义类时只要保证把其中能dispose的对象都dispose了,把自定义的数组等都erase了就算完成了自己的任务,至于这些内存何时释放、那些对象本身是否存在内存泄露,就不是你能准确把握的了
销毁自定义类时只要保证把其中能dispose的对象都dispose了,把自定义的数组等都erase了就算完成了自己的任务,至于这些内存何时释放、那些对象本身是否存在内存泄露,就不是你能准确把握的了
#10
所谓“疑人不用、用人不疑”。
你既然不相信 .NET 能帮你回收好内存,必须你自己关注这个问题的话,
你就应该放弃 .NET ,还是去用 C\C++, 那个就能如你所愿,释放内存立刻就能看到了。
你既然不相信 .NET 能帮你回收好内存,必须你自己关注这个问题的话,
你就应该放弃 .NET ,还是去用 C\C++, 那个就能如你所愿,释放内存立刻就能看到了。
#11
选择了.net就应该考虑到内存的占用量,否则用汇编用C
#1
不仅仅是Dispose那么简单
首先在你的类首次实例化时,有没有考虑到从托管代码编译到本地代码的过程
释放的只是对象,但用到过的托管代码会缓存起来,使以后加载更快
想完全回收“18000K”不太可能
当然这只是一方面
首先在你的类首次实例化时,有没有考虑到从托管代码编译到本地代码的过程
释放的只是对象,但用到过的托管代码会缓存起来,使以后加载更快
想完全回收“18000K”不太可能
当然这只是一方面
#2
内存会在垃圾回收器认为合适的时候回收,如果你认为某个操作不是频繁发生的,可以调用
GC.Collect()
GC.WaitForFullGCComplete()
比如关闭窗体后,执行以上代码。
#3
郁闷,用IDispose不但没释放资源,还增加了几十K...加个GC.Collect就释放了,还是自己写Dispose算了,把一些变量设为Nothing还剩下10000K了,还8000K真的不能释放了么?
#4
你平常感觉到缺少这块内存吗?
这块内存其实不值几毛钱,只是一些自认为c语言学得好的人比不过别人编程和程序部署的效率只好比这个。
这块内存其实不值几毛钱,只是一些自认为c语言学得好的人比不过别人编程和程序部署的效率只好比这个。
#5
晕,资源释放完整些不好吗?我没那意思...
#6
http://www.w3school.com.cn/xpath/xpath_axes.asp
#7
?
#8
你的这部分内存恐怕没办法完全回收的,你的程序要运行是要依托.Net Framework的,这个东西也是要占用内存的。
#9
不见得一定是你的问题,尽管你把类里面的控件全部Dispose了,但这只意味着它们占用的内存允许被回收,而不意味着一定立即被回收,注意2楼那句"在垃圾回收器认为合适的时候回收"。
销毁自定义类时只要保证把其中能dispose的对象都dispose了,把自定义的数组等都erase了就算完成了自己的任务,至于这些内存何时释放、那些对象本身是否存在内存泄露,就不是你能准确把握的了
销毁自定义类时只要保证把其中能dispose的对象都dispose了,把自定义的数组等都erase了就算完成了自己的任务,至于这些内存何时释放、那些对象本身是否存在内存泄露,就不是你能准确把握的了
#10
所谓“疑人不用、用人不疑”。
你既然不相信 .NET 能帮你回收好内存,必须你自己关注这个问题的话,
你就应该放弃 .NET ,还是去用 C\C++, 那个就能如你所愿,释放内存立刻就能看到了。
你既然不相信 .NET 能帮你回收好内存,必须你自己关注这个问题的话,
你就应该放弃 .NET ,还是去用 C\C++, 那个就能如你所愿,释放内存立刻就能看到了。
#11
选择了.net就应该考虑到内存的占用量,否则用汇编用C