当前位置: 首页 > news >正文

产品设计排名/seo综合查询接口

产品设计排名,seo综合查询接口,求推荐在哪个网站做德语翻译员,网站排版设计欣赏C#内存释放(垃圾回收) 问题背景---- 今天写了个很小的程序,程序的功能仅仅是截图,但是如果长时间开启并截图的时候,程序会变的很大,从刚开始的运行在任务管理器中只有十几K大小,运行一段时间后在任务管理器中看到程序…

C#内存释放(垃圾回收)

问题背景----

今天写了个很小的程序,程序的功能仅仅是截图,但是如果长时间开启并截图的时候,程序会变的很大,从刚开始的运行在任务管理器中只有十几K大小,运行一段时间后在任务管理器中看到程序可以达到1G或2G甚至更大;最初想到的是所有的截图都保存在内存中,没有释放造成的。去检查代码,发现程序中已经使用GC.Collect();但是为什么程序还是会一直增加呢?由于程序中逻辑判断等比较多,不方便跟踪及查找。所以我自己单独写了个测试程序,去看看调用GC.Collect();释放的问题?

测试环境----

首先准备一个对象(由于程序中使用了一些静态变量),所以准备的对象如下:

复制代码

public class CountObject{public static int Count = 0;public CountObject(){Count++;}~CountObject(){Count--;}}

复制代码

程序很简单,只有一个静态的计数变量。下面在看看主程序:

复制代码

 1 static void Main(string[] args)2         {3             CountObject obj;4             for (int i = 0; i < 5; i++)5             {6                 obj = new CountObject();7                 //obj = null; // 这一步,只是为了更清晰些验证引用的对象是否释放!8                 GC.Collect();9 
10             }
11             //GC.Collect();
12             //GC.WaitForPendingFinalizers();
13 
14             // Count不会是1,因为Finalizer不会马上被触发,要等到有一次回收操作(GC.Collect())后才会被触发。 GC.Collect();GC.WaitForPendingFinalizers();
15             Console.WriteLine(CountObject.Count);
16             Console.ReadKey();
17         }

复制代码

程序也比较简单,我做了如下测试:

1)使用以上程序运行,发现15行会输出5,说明我们调用了GC.Collect();但程序并没有执行释放,因为查GC的官方解释,是不确定的某个时刻进行回收。

2)把循环每次增大5个。当循环增加到125的时候,多次执行后发现,我本机测试,在第15行的输出是1或125,当增加到10000,每次都输出1,说明符合官方解释;

根据以上代码测试知道,当循环5次的时候,GC并不会立即执行,所以当执行5次循环的时候第8行没起作用。既然不起作用,我们把他注释暂时不用,把11和12行开启。

3)把地8行注释,11,12行开启,执行5次循环,发现15行输出1,多次执行结果相同。

4)再把11行注释,12行开启,执行5次循环,发现15行输出5,多次执行结果相同。

5)再把12行注释,11行开启,执行5次循环,发现15行输出5,多次执行结果相同。

根据4和5的才测试可以看到,当少量的循环时Finalizer不会马上被触发,要等到有一次回收操作(GC.Collect())执行后才会被触发。所以我们可以显式调用 GC.Collect();GC.WaitForPendingFinalizers();这两行代码进行强制回收的执行。

6)验证,把第7行开启,执行测试第15行为0,说明对象如果没有任何的引用则可以强制回收。

以上是本人的一些测试,如果你还有更好的想法,可以提出一起讨论;

版权归个人所有,转载请注明出处;

如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【关注我】。

如果你觉得本篇文章对你有所帮助,请给予我更多的鼓励,求打             付款后有任何问题请给我留言!!!

因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【Jack_孟】!

分类: C#

http://www.lbrq.cn/news/1074547.html

相关文章:

  • 网站建设图片/信阳网站seo
  • 优化型网站建设/seo整站优化解决方案
  • 提高网站流量原则/网络营销策划书1000字
  • 0539 网站/百度人工服务24小时电话
  • 做网站怎么还用身份证/关键词汇总
  • 任县城乡建设局网站/石家庄
  • 网页设计基础知识试题/seo内容优化是什么
  • 佛山网站建设网站制作公司/seo营销专员
  • 所得税汇算是在12366网站做吗/seo推广排名重要吗
  • 如何获取免费的wordpress/廊坊百度快照优化排名
  • 湛江网站制作公司/bt磁力猪
  • 基金会网站开发方案/公司网页怎么制作
  • 网站改版百度提交/关键词优化武汉
  • 深圳做百度网站/b站推广网站入口mmm
  • 用js做的个人酷炫网站/百度数据指数
  • 网站丢失了怎么办/2022年新闻摘抄简短
  • 描述网站开发的广告词/用今日头条导入自己网站外链
  • 做网站的软件多少钱/站内关键词自然排名优化
  • 河曲县城乡建设管理局网站/seo监控
  • 义乌seo快速排名/深圳优化公司样高粱seo
  • 深圳网站建设科技有限公司/百度广告联系方式
  • 河南网站制作公司哪家好/新乡seo外包
  • 福州企业建站程序/网店代运营骗局
  • ps里新建网站尺寸怎么做/百度指数批量查询
  • 网站服务器开发/温州seo品牌优化软件
  • 网站域名想更换要怎么做/微信管理软件
  • 诸城哪里有做网站的/公司网站排名
  • 做动态网站需要什么软件/宁波优化网站厂家
  • 武汉建网公司网站建设/百度搜索关键词优化方法
  • 河北永生建筑工程网站/网站开发框架
  • SmartCLIP:具有识别保证的模块化视觉-语言对齐
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第8章 备份与恢复
  • wxPython 实践(六)对话框
  • Python从入门到精通——第五章 列表与元组
  • 逻辑回归 银行贷款资格判断案列优化 交叉验证,调整阈值,下采样与过采样方法
  • [硬件电路-115]:模拟电路 - 信号处理电路 - 功能放大器工作分类、工作原理、常见芯片