WPF的内存问题
来源:互联网 发布:入侵centos教程 编辑:程序博客网 时间:2024/06/15 01:58
WPF的内存问题困扰了很久.
众所周知,如果长时间使用WPF的程序,它的内存占有将会持续增长。甚至持续的点击一个Button,它的内存也会不断的增长。这是我觉得WPF唯一不够尽人意的地方吧。
那么,难道就没有改善WPF内存的方法吗?
在网上搜索了很久,终于找到了一个比较可行的办法。
首先,感谢网友的分享:
http://www.dotnetdev.cn/2010/04/wpf内存释放解决方案/
这个方法的意思是当程序处于闲置状态时(即改程序处于未激活状态),那么我们可以通过kernel32.dll将物理内存与虚拟内存进行交换。即将主内存的资源暂时放到虚拟内存中。这样就减轻了物理内存的负担。
MSDN对这个函数的解释:
使用这个函数来设置应用程序最小和最大的运行空间,只会保留需要的内存。当应用程序被闲置或系统内存太低时,操作系统会自动调用这个机制来设置应用程序的内存。应用程序也可以使用 VirtualLock 来锁住一定范围的内存不被系统释放。
当你加大运行空间给应用程序,你能够得到的物理内存取决于系统,这会造成其他应用程序降低性能或系统总体降低性能,这也可能导致请求物理内存的操作失败,例如:建立进程,线程,内核池,就必须小心的使用该函数。
实际上,这个函数并不能真正的释放内存,而只是重新分配改程序的内存占用,将暂时不需要的内容放进虚拟内存,当应用程序重新激活时,会将虚拟内存的内容重新加载到内存。所以,我们不宜过度频繁的调用该方法,这样只会使性能变低。
实际使用中,我们只需要当窗口关闭时,或者最小化时调用此方法即可解决内存不能释放的问题,该方法同样适用于Silverlight和Winform。
补充:后来发现也可以通过限制程序的使用内存进行优化。但是这需要知晓程序的最大内存占有。
- WPF的内存问题
- wpf内存泄漏问题
- wpf内存泄漏问题
- WPF DataContent内存释放问题
- WPF的多线程问题
- WPF Treeview的问题
- WPF的BitmapImage的文件无法释放及内存泄露的问题
- WPF的BitmapImage的文件无法释放及内存泄露的问题
- WPF 4.0 中关于 AutomationPeer引起的内存泄露问题(AutomationPeer Memory Leak)
- 关于WPF打印的问题
- WPF下的资源问题
- cef wpf 遇到的问题
- WPF ItemSource绑定的问题
- WPF问题
- WPF下字体模糊的问题
- WPF Storyboard的属性锁定问题
- WPF 中Treeview 的性能问题
- 基于wpf的相关设计问题-ViewModel
- Oracle 数据库表空间碎片查询和整理
- 正则表达式
- ABAP中常用的Function
- 如何根据SIM卡背面的10位序列号判断运营商,国家,地区,卡商
- jQuery学习笔记5 表单验证
- WPF的内存问题
- C# 文件下载四方法
- PHP設計模式之責任鏈模式
- Oracle RAC 环境下修改主机名
- 公务员资料网址
- cookbook学习笔记一
- 关于“开源运动在中国”的个人小谈
- 区别script中的type=”text/javascript”和language=”Javascript”
- 完全可用的WEB IP地址输入框