社区
C#
帖子详情
WPF写出来的程序,为什么这么“消耗内存”,占用内存太大了,怎么办?
booooook
2011-05-04 10:47:57
我写的一个WPF小程序,运行起来,却占了一百多MB的内存。。
还有,虚拟内存占了差不多200Mb。。。
怎么办?
是不是需要手动释放内存的?
...全文
4059
14
打赏
收藏
WPF写出来的程序,为什么这么“消耗内存”,占用内存太大了,怎么办?
我写的一个WPF小程序,运行起来,却占了一百多MB的内存。。 还有,虚拟内存占了差不多200Mb。。。 怎么办? 是不是需要手动释放内存的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hualiang_ll
2011-05-05
打赏
举报
回复
[Quote=引用 7 楼 booooook 的回复:]
引用 3 楼 chirea 的回复:
用完了还是是释放掉..
怎么释放内存?
[/Quote]
看看那些经常New的类,写成单例。
dylike
2011-05-05
打赏
举报
回复
实现的效果往往与吃内存是成正比的
tengjian1981
2011-05-05
打赏
举报
回复
WPF的确很占资源,我写过一个也是,消耗内存越来越大。
另外也要注意释放问题,自己好好找找哪些可以及时释放,慢慢排查,我当时也优化了好久
booooook
2011-05-05
打赏
举报
回复
[Quote=引用 3 楼 chirea 的回复:]
用完了还是是释放掉..
[/Quote]
怎么释放内存?
booooook
2011-05-05
打赏
举报
回复
[Quote=引用 5 楼 kingdom_0 的回复:]
程序应该有很大的优化空间。
记得资源释放。
[/Quote]
怎么释放内存?
例如,我很多函数里都有很多new,而且只是局部变量。
kingdom_0
2011-05-05
打赏
举报
回复
程序应该有很大的优化空间。
记得资源释放。
kid_wang
2011-05-05
打赏
举报
回复
首先WPF确实很占内存。
其次,如果想你的情况,应该是写的不合理。还是GC吧。
人工智能算法
2011-05-05
打赏
举报
回复
[Quote=引用 12 楼 booooook 的回复:]
引用 10 楼 hualiang_ll 的回复:
引用 7 楼 booooook 的回复:
引用 3 楼 chirea 的回复:
用完了还是是释放掉..
怎么释放内存?
看看那些经常New的类,写成单例。
单例的意思是?
[/Quote]
如果可以只实例化一个实例. 不要对于经常需要且不需重新实例化的对象 可以声明为全局的
对于需要经常使用的临时创建的数组 集合 或者其他缓冲区
可以设置一个全局缓冲管理的类来管理, 减少重复申请内存的操作.使用一个缓冲 到程序结束释放.
xsi640
2011-05-05
打赏
举报
回复
http://www.dotnetdev.cn/2010/04/wpf%e5%86%85%e5%ad%98%e9%87%8a%e6%94%be%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88/
WPF释放内存
booooook
2011-05-05
打赏
举报
回复
[Quote=引用 10 楼 hualiang_ll 的回复:]
引用 7 楼 booooook 的回复:
引用 3 楼 chirea 的回复:
用完了还是是释放掉..
怎么释放内存?
看看那些经常New的类,写成单例。
[/Quote]
单例的意思是?
booooook
2011-05-05
打赏
举报
回复
[Quote=引用 8 楼 tengjian1981 的回复:]
WPF的确很占资源,我写过一个也是,消耗内存越来越大。
另外也要注意释放问题,自己好好找找哪些可以及时释放,慢慢排查,我当时也优化了好久
[/Quote]
具体是怎么释放一个变量的内存?用什么函数?
禁用F3
2011-05-05
打赏
举报
回复
用完了还是是释放掉..
m777
2011-05-04
打赏
举报
回复
.NET吃内存比较正常吧,当然跟你自身的程序也是有关系的
哨子
2011-05-04
打赏
举报
回复
你string用得多了吧?用StringBulder试试.
再就是你在程序中创建了很多实例没有?
呃,其实.net就是毛病.因为它的垃圾回收机制是托管的.我写的一个程序,刚启动就是35+的内存.
1小时精通
WPF
无边框
程序
设计
本课程从零开始创建工程,一步一步实现无边框窗口的实现,无边框对话框的实现,以及自定义无边框窗口控件及使用,无能你是刚转入C#
写
WPF
,还是初级学习,以及在校生都可在1小时内精通
WPF
无边框应用设计,能在课后快速搭建自己的任意窗口类型。
C#
WPF
开发如何减少
程序
的
内存
占用
使用Task可以使你更简单地编
写
异步和并行代码,但你仍然需要注意管理
内存
的使用,特别是在处理大量数据或创建大量任务时。在优化
内存
使用时,最好的方法通常是先通过性能分析工具(如Visual Studio的诊断工具)来识别
内存
使用的热点,然后针对这些热点进行优化。:缓存可以提高
程序
的性能,但如果不正确地使用,可能会成为
内存
泄漏的源头。使用Task不一定会增加
内存
使用,这主要取决于你如何使用Task和执行的操作的性质。:确保所有事件处理
程序
在不需要时都被解除注册,避免长生命周期的对象持有短生命周期对象的引用。
WPF
:警惕TextBox会
占用
过多
内存
适当设置
WPF
的TextBox.UndoLimit(尤其是.NET 3.5/4.0环境下,默认值-1太可怕了)。当然这仅仅应用在频繁设置TextBox值的情况下,如果没有此类情况,无需担心。另外也要注意如果要进行频繁字符串拼接操作,请使用TextBoxBase.AppendText或者StringBuilder。
.net6
wpf
程序
一个
内存
不断增长问题的解决方法
在主窗体中指定了FontFamily为MetarialDesign的字体,而出问题的TextBlock是在一个UserController. 如果FontFamily不指定或者指定为Windows系统自带的字体,则不会出现
内存
泄漏的问题。在解决方案中,另外有一个命令行
程序
,除了显示数据外,其他功能与
wpf
程序
的功能完全一致。通过注释不同显示模块,最终发现,界面一个TextBlock绑定了不断变化的接收数据的数量,只要不显示此TextBlock,
内存
就不再增长。一个星期后工作集
占用
内存
达到1GB。
C#
WPF
内存
回收与释放LierdaCracker
使用
wpf
程序
常常会出现一个问题,那就是
内存
占用
过高,使用
wpf
的
程序
功能越复杂往往用着用着
内存
就本着90往上去了。 一方面
wpf
本身是一个ui框架,对图像以及界面的渲染虽然提高了软件的美观性,但实际使用过程中调用和
消耗
了大量的
内存
来进行协同处理; 另一方面这些调用的
内存
的确在使用完成之后并没有进行主动的释放或者是只是自动释放了一部分,即对于托管资源通过GC自动清理回收。对于非托管资源,通过代码调用手动进行清除,再由GC回收。例如流,数据库连接,网络连接等,所以就需要我们主动定时的对
内存
进行回收释放的处理。
C#
110,567
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章