自动打扫战场--内存管理.net 学习
来源:互联网 发布:此非曹孟德之诗乎 编辑:程序博客网 时间:2024/04/28 19:30
class MemoryProcess
{
public static void Main()
{
//创建对象,分配内存,并初始化
FileStream fs = new FileStream(@"C:/temp.txt", FileMode.Create);
try
{
//对象成员的操作和应用
byte[] txts = new UTF8Encoding(true).GetBytes("Hello, world.");
fs.Write(txts, 0, txts.Length);
}
finally
{
//执行资源清理
if (fs != null) fs.Close();
}
}
}
上述示例完成了一个简单的文件写入操作,我们要关注的是FileStream类型对象从创建到消亡的整个过程,针对上述示例总结起来各个阶段主要包括:
l 对象的创建及内存分配。
通过new关键字执行对象创建并分配内存,对应于IL中的newobj指令,除了这种创建方式,.NET还提供了其他的对象创建方式与内存分配,在本章5.2节“对象创建始末”中,将对.NET的内存分配及管理作以详细的讨论与分析。
l 对象初始化。
通过调用构造函数,完成对象成员的初始化,在本例FileStream对象的初始化过程中,必然发生对文件句柄的初始化操作,以便执行读写文件等应用。.NET提供了15个不同的FileStream构造函数来完成对不同情况下的初始化处理,详细的分析见本章5.2节“对象创建始末”。
l 对象的应用和操作。
完成了内存分配和资源的初始化操作,就可以使用这些资源进行一定的操作和应用,例如本例中fs.Write通过调用文件句柄进行文件写入操作。
l 资源清理。
应用完成后,必须对对象访问的资源进行清理,本例中通过Close方法来释放文件句柄,关于非托管资源的释放及其清理方式,详见描述可参见5.3节“垃圾回收”。
l 垃圾回收。
在.NET中,内存资源的释放由GC负责,这是.NET技术中最闪亮的技术之一。CLR完全代替开发人员管理内存,从分配到回收都有相应的机制来完成,原来熟悉的free和delete命令早已不复存在,在本章5.3节“垃圾回收”中,将对垃圾回收机制作以详细的讨论与分析。
- 自动打扫战场--内存管理.net 学习
- .NET框架下的自动内存管理
- .NET框架自动内存管理(6)
- .NET框架自动内存管理(5)
- .NET框架自动内存管理(4)
- .NET框架自动内存管理(3)
- .NET框架自动内存管理(2)
- .NET框架自动内存管理(1)
- CH19 自动内存管理 .net复习课
- C#或者说.NET的自动内存管理 学习中碰到的问题。
- [Microsoft.NET框架程序设计(修订版)]谈谈自动内存管理
- 转贴:.NET的自动内存管理(作者:蔡学镛)
- 自动内存管理
- 自动共享内存管理
- c# 自动内存管理
- ORACLE自动管理内存
- Oracle 自动内存管理
- Oracle 内存自动管理
- 详解spring2.0的scope
- DA25 - Data Abstract对ASP.NET 的支持
- 一次2000修复实践
- 30个特色网站
- asp.net帐号权限问题
- 自动打扫战场--内存管理.net 学习
- 一次2000安装奇遇
- 未托管资源-平台调用(P/Invoke)
- 蓝海战略
- 解决SQLServer2000之日志传送功能
- HTTPS传送文件的打包方式(为一个朋友调试的过程)
- C# 2.0&3.0新特性总结
- 竹笋炒肉: Jmagick学习笔记
- 检修