C#有自动回收内存的机制,但是有时自动回收有一定滞后,需要在变量使用后迅速回收,节约内存,这里介绍一个最简单的方法。

1.先对对象赋值 null;

2.System.GC.Collect();

代码样例:

 1 class Program
2 {
3 static void Main(string[] args)
4 {
5 long lenth = 1024 * 1024 * 128;
6
7 GetCost("程序启动");
8
9 double[] data = new double[lenth];
10 for (int i = 0; i < lenth; i++)
11 {
12 data[i] = double.MaxValue;
13 }
14 GetCost("数据制造完成");
15
16 data = null;
17 GetCost("data = null");
18
19 System.GC.Collect();
20 GetCost("System.GC.Collect()");
21
22 Console.ReadKey();
23 }
24
25 /// <summary>
26 /// 显示内存使用的状态
27 /// </summary>
28 /// <param name="state"></param>
29 static void GetCost(string state)
30 {
31 Console.Write("当前状态:" + state + "; 占用内存:");
32 using (var p1 = new PerformanceCounter("Process", "Working Set - Private", "GCtest.vshost"))
33 {
34 Console.WriteLine( (p1.NextValue()/1024/1024).ToString("0.0")+"MB");
35 }
36 }
37 }

运行结果:

不手动回收时,系统会等到程序执行结束时回收。在使用data=null后表示该数据已经不再使用,System.GC.Collect();通知系统立即进行一次回收操作,根据C#的内存管理原则,不再使用的变量被回收。

最新文章

  1. Elasticsearch的CRUD:REST与Java API
  2. android studio 中 添加.so 文件
  3. Aurelia – 模块化,简单,可测试的 JS 框架
  4. 【改】IOS-百度地图API用点生成线路、导航、自定义标注 2013年11月更新
  5. jQuery api 学习笔记(1)
  6. C++ 智能指针auto_ptr
  7. Mysql学习(慕课学习笔记8)插入、更新、删除记录
  8. MySQL中CASE的使用
  9. VS2013验证控件出现 WebForms UnobtrusiveValidationMode 必须“jquery”ScriptResour......错误的解决方案
  10. 201521123061 《Java程序设计》第九周学习总结
  11. RDIFramework.NET V3.3 WinForm版新增日程管理功能模块
  12. JQuery operate xml
  13. mysql timestamp字段定义的
  14. html5闰年判断函数
  15. ac自动机板子
  16. 事件分发机制 事件拦截 滑动冲突 MD
  17. Tomcat下JSP、Servlet和JavaBean环境的配置
  18. [jOOQ中文] 七个步骤快速入门
  19. 图形剖析,当给 ul 设置padding=0, margin=0后 li前面的小黑点消失的现象原理!
  20. ubuntu下从源码编译安装cherokee

热门文章

  1. linux文件系统创建文件的过程
  2. WinForm点击按钮在对应的panel里画图
  3. C# 正则表达式 匹配IP地址
  4. 配置java环境
  5. Unity3D脚本中文系列教程(十三)
  6. 恢复被win7覆盖的Ubuntu Grub
  7. lintcode:Palindrome Partitioning 分割回文串
  8. java小程序:求完全数
  9. 分布式内存对象缓存系统Memcached-概述
  10. Java学习笔记之:Java数据类型的转换