GC 回收
来源:互联网 发布:淘宝店链接在哪里找到 编辑:程序博客网 时间:2024/04/28 12:39
环境:
操作系统:WIN2003
开发环境:C#。NET
目的:对象型、值型、字符串型、图片、COM等在内存方面占用率进行分析。
用例一:一个类(test)里定义了6个字符串、每个付值为“22222”,4个窗体对象。循环1000次定义该类(test)的对象。
结果:
调用了释放方法:18.168~18.452
否 : 18.051~18.912
用例二:一个类(test)里定义了1个字符串、付值为“22222”,循环1000次定义该类(test)的对象。
结果:
调用了释放方法:18.076~18.334
否 : 18.064~18.304
用例三:一个类(test)里定义了一个窗体对象,循环1000次定义该类(test)的对象。
结果:
调用了释放方法:18.072~18.428
否 : 18.104~18.604
用例四:一个类(test)里定义了6个字符串、每个付值为“22222”,循环1000次定义该类(test)的对象。
结果:
调用了释放方法:18.068~18.432
否 : 18.076~18.640
用例五:一个类(test)里不定义任何变量,释放方法没有具体代码。循环1000次定义该类(test)的对象。
调用了释放方法:17.956~18.140
否 :17.876~18.104
总结:
以上数据明显看到:调用多一个方法本身都会增加内存。例如:只定义一个字符串的时候不调用释放方法所占用的内存是比调用还少。一个类里定义的对象增多后很明显,调用释放方法的内存明显降低了。
只有析构和释放方法时:(18.104-18.140-17.876+17.956)/1000*1024*1024=46字节
一个窗体对象占用内存((18.604-18.428)-(18.104-18.072))/1000*1024*1024=675字节
一个5位的字符串占用内存((18.640-18.432)-(18.076-18.068))/6000*1024*1024=35字节
代码:
using System;
namespace gc
{
///<summary>
/// Gc 的摘要说明。
///</summary>
[Serializable]
public class Gc : System.IDisposable
{
public Gc()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
//供程序员显式调用的Dispose方法
public void Dispose()
{
Dispose(true);
//调用带参数的Dispose方法,释放托管和非托管资源
System.GC.Collect();
System.GC.SuppressFinalize(this);
//手动调用了Dispose释放资源,那么析构函数就是不必要的了,这里阻止GC调用析构函数
}
protected virtual void Dispose(bool disposing)
//protected的Dispose方法,保证不会被外部调用。
//传入bool值disposing以确定是否释放托管资源
{
if (disposing)
{
//在这里加入清理"托管资源"的代码,应该是xxx.Dispose();
}
// 在这里加入清理"非托管资源"的代码
}
~Gc()
//供GC调用的析构函数
{
Dispose(false);
//释放非托管资源
}
}
}
- GC 回收
- GC回收
- 小议GC回收
- GC回收机制
- 内存垃圾回收 GC
- java垃圾回收GC
- Java 垃圾回收 GC
- flash 垃圾回收GC
- GC(垃圾回收)
- 垃圾回收(GC)
- java回收机制gc
- 内存垃圾回收 GC
- 减少GC回收
- GC垃圾回收
- GC内存回收
- GC----垃圾回收机制
- 【Unity】减少GC回收
- GC JVM垃圾回收
- event.keyCode
- 调用Dos命令
- 进度条
- 毕业前的爱情:在最后一个夏季要坚守还是放弃
- (32)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第七节
- GC 回收
- windows mobile 中软键菜单的格式
- Scott Mitchell 的ASP.NET 2.0数据教程之二十一:: 实现开放式并发
- jdk6.0 jconsole无法看到本地进程
- 八木天线
- Linux手机DIY.Shell应用扩展二.自动生成播放列表(E680系列)
- 看展
- VC程序对WS2_32.dll的依赖
- websphere配置oracle数据源