社区
C#
帖子详情
重复实例化,导致内存不足问题
nesto
2011-08-15 02:08:31
我用winform做了一个显示图片的东西,然后显示图片的是一个自定义控件,我再循环加载图片的时候,每加载一张图片就会实例化一次这个控件,结果导致内存不足,请问有什么方法可以解决,或者其他加载图片的方法。
...全文
220
13
打赏
收藏
重复实例化,导致内存不足问题
我用winform做了一个显示图片的东西,然后显示图片的是一个自定义控件,我再循环加载图片的时候,每加载一张图片就会实例化一次这个控件,结果导致内存不足,请问有什么方法可以解决,或者其他加载图片的方法。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bugers
2011-08-15
打赏
举报
回复
自定义控件.图片=new 图片;
不要每次实例化一个新的 自定义控件,这样之前看过的图片 由于没有引用 会被垃圾回收的。
内存不足是因为你之前引用的图片 都还在引用,不会被回收内存空间。多了 自然内存不够了
nesto
2011-08-15
打赏
举报
回复
[Quote=引用 9 楼 yysyangyangyangshan 的回复:]
界限是 字节
[/Quote]
我试过了,这样并不能满足我的要求,过程是这样的,我有一个自定义控件,上边包含一个picturebox,两个label 还有一个button ,然后两一个界面上边是一个panel,然后我再这个panel中加载这个自定义控件,每显示一张图片就要家在一次,在操作的时候还要重新记载,也就需要重新实例化,这样就导致了最终内存不足的情况。
每次实例化都会分配一个内存,但是在这个有panel的界面没有关闭的时候,是无法释放内存的,多以内存占用就会越来越大。
我现在想如何在不重复实例化的情况下显示多张图片,并且具有自定义控件中的那些操作功能。
nesto
2011-08-15
打赏
举报
回复
[Quote=引用 10 楼 liuhongzhe 的回复:]
你是不是要做一个图片浏览的工具?
[/Quote]
差不多吧,不过,在显示出来之后我还要对这些图片进行一些操作。
劉宏哲
2011-08-15
打赏
举报
回复
你是不是要做一个图片浏览的工具?
杨友山
2011-08-15
打赏
举报
回复
界限是 字节
jrl951
2011-08-15
打赏
举报
回复
我的做法是这样的
if (backimage != null)
{
backimage.Dispose();
}
backimage = new Bitmap(Assembly.GetExecutingAssembly().GetManifestResourceStream(backimagepath));
nesto
2011-08-15
打赏
举报
回复
[Quote=引用 2 楼 liuhongzhe 的回复:]
这种情况,一般都是你的设计不太合理。具体你的业务我不清楚,只能说你再想想你的业务,是不是一定要这么设计。不要在这个问题上花太多时间,好好想想设计是否合理。
[/Quote]
我试过使用dispose释放资源,但是在释放了资源之后,图片就显示不出来了!
nesto
2011-08-15
打赏
举报
回复
[Quote=引用 1 楼 yysyangyangyangshan 的回复:]
try
{
System.Diagnostics.Process p = System.Diagnostics.Process.GetCurrentProcess();
if (p.WorkingSet > 10240000)//填个界限
{
……
[/Quote]
你好,业务确实是需要这样的,需要显示很多图片,并且是实时刷新,但是目前我没想到其他的更好的方法。
nesto
2011-08-15
打赏
举报
回复
[Quote=引用楼主 nesto 的回复:]
我用winform做了一个显示图片的东西,然后显示图片的是一个自定义控件,我再循环加载图片的时候,每加载一张图片就会实例化一次这个控件,结果导致内存不足,请问有什么方法可以解决,或者其他加载图片的方法。
[/Quote]
你好,请问这个界限的单位是什么呢?
白鸽
2011-08-15
打赏
举报
回复
动态的更换图片空间的路径不是更好吗!为什么每次要去实例化那个控件,这样的实现系统的负担会很大!
isjoe
2011-08-15
打赏
举报
回复
[Quote=引用楼主 nesto 的回复:]
我用winform做了一个显示图片的东西,然后显示图片的是一个自定义控件,我再循环加载图片的时候,每加载一张图片就会实例化一次这个控件,结果导致内存不足,请问有什么方法可以解决,或者其他加载图片的方法。
[/Quote]
不在显示使用的图像,立即释放就可以了 Image.Dispose ()
劉宏哲
2011-08-15
打赏
举报
回复
这种情况,一般都是你的设计不太合理。具体你的业务我不清楚,只能说你再想想你的业务,是不是一定要这么设计。不要在这个问题上花太多时间,好好想想设计是否合理。
杨友山
2011-08-15
打赏
举报
回复
try
{
System.Diagnostics.Process p = System.Diagnostics.Process.GetCurrentProcess();
if (p.WorkingSet > 10240000)//填个界限
{
p.MaxWorkingSet = p.MaxWorkingSet;
}
}
catch (System.Exception ex)
{
}
试试能行不
阿里P7面试必备Spring整合MyBatis源码分析
【本课程带你深入源码剖析Spring整合MyBatis的内部实现】 Spring Framework的核心是ioc的依赖注入、aop的面向切... 3、Mapper接口是怎么
实例化
的? 4、Service中注入的Mapper接口是什么对象?如何
实例化
该注入的对象?
Java对象在内存中
实例化
的过程
Java对象在内存中
实例化
的过程 在讲 Java 对象在内存中的
实例化
过程前,先来说下在类的
实例化
过程中,内存会使用到的三个区域:栈区、堆区、方法区。 堆区: 存储的全部都是对象,每个对象包含了一个与之对应的 ...
C++ 模板何时被
实例化
今天编程时碰到一个
问题
,写了一个单例的类模板,之前程序一直能跑,但...
实例化
的类是不是所有的函数都同时被
实例化
? 整理和理解网上资料后获得如下总结: 1.在我们使用类模板时,只有当代码中使用了类模板的...
Vue优化:常见会
导致
内存泄漏
问题
及优化
echarts
问题
: 不要把chart实例赋值在this上。(this对象一直存在不会被回收) 析构掉生成的echarts对象。 //-dom 不存在时不画 if (!this.$refs.barchart) { return } //- 不要
重复
初始化 let Chart = echarts....
C# 加载和传递图片,
导致
内存溢出的
问题
由C#向C++里面传递图像的过程中,多加载几次图像后,内存会暴涨,主要有两个原因: 一、pictureBox的清理不能用...二、Bitmap
实例化
之后,需要释放用dispose()空间。 [DllImport("HoleDetect.dll", Ca...
C#
110,539
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章