下载此文档

浅析.NET的垃圾回收机制.doc


文档分类:IT计算机 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
浅析.NET的垃圾回收机制.doc的垃圾回收机制摘要:.NETFramework中的垃圾回收(GarbageCollection)机制减少了一些应用程序中发生内存泄露和访问冲突的可能性,但GC的工作机制仍然存在问题。在程序开发中,总会发现对于GC的错误理解。文章针对此问题进行研究分析,简要说明内存垃圾的产生原因、垃圾回收机制的原理、垃圾回收的主要对象以及释放模式。关键词:内存管理;托管堆;垃圾回收;释放模式;终结器中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)34-1989-03 SHIJun,LIYan-hui (ComputerScienceandTechnologyDepartment,YangzhouVocationalCollegeofEnvironment&Resources,Yangzhou225127,China) Abstract:Thegarbagecollection(GC)essviolationfromsomeapplicationprograms,,thisarticleisgoingtoexplainbrieflytherootcauseofmemorygarbage,thetheoryofthegarbagecollectionsystem,itsmainobjectiveandreleasemode. Keywords:memorymanagement;managedheap;garbagecollection;releasemode;finalizer 1引言我们可能都碰到过程序莫名奇妙的崩溃、或内存使用不停上涨。对于前者,常见的有资源管理器突然崩溃,机器突然发生蓝屏;对于后者,你可能会发现有些进程的内存持续暴涨,直到计算机无法使用,这时不得不重启计算机,这就是常见的访问冲突和内存泄漏。相对于C++程序员来说,C#程序员非常幸运,至少不要为内存泄漏而头疼,不需要负责内存的分配和回收。不少程序员都会有这样的疑惑:Framework进行,但能保证内存的有效使用吗?能够保证程序的运行效率吗? 2垃圾回收机制 Framework中,内存中的资源分为"托管资源"和"非托管资源"。托管资源必须接受CLR(公共语言运行库)的管理,分别存放在两种地方:"堆栈"和"托管堆";规则是,所有的值类型(包括引用和对象实例)和引用类型的引用都存放在"堆栈"中,而所有引用所代表的对象实例都保存在托管堆中。而非托管资源则不必接受CLR的管理。内存管理就是对象的分配和释放问题。在传统的Win32编程中,对于资源对象的访问方式是: 1)声明对象并分配内存; 2)使用对象; 3)销毁对象并释放内存。上面的每一步,可能都存在陷阱。可能内存不够用,导致下面的代码调试失败;可能要访问的对象,指向了一个虚无缥缈的地址空间;可能编程人员忘记了释放内存,会发生内存泄漏,也有一些编程人员试图访问已经被释放的内存,那么也会发生访问冲突。我们以前使用的C++语言或其它语

浅析.NET的垃圾回收机制 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人jactupq736
  • 文件大小34 KB
  • 时间2019-05-14
最近更新