登录
首页 » C# » GC 垃圾回收算法

GC 垃圾回收算法

于 2012-12-16 发布
0 270
下载积分: 1 下载次数: 0

代码说明:

  =1,2垃圾回收算法:    托管堆:CLR要求的资源从托管堆分配,任何对象只要没有应用程序的根引用它,都会在某个时刻被垃圾回收器回收 基于代的机制,提高回收的性能,在程序的生命期中,新建的对象是新一代,而创建的比较早的对象是老一代,第0代是最近分配的对象,CLR 使用了0,1,2三代进行管理 =3 GC和调试GcAndDebug.cs =4本地资源终结(finalization)是CLR提供的一种机制,允许对象在垃圾回收器回收其内存之前执行一些得体的清理工作,任何包装了本地资源的类型都必须支持终结操作(实现一个命名为Finalize的方法)。GC判断一个对象是垃圾时,会调用对象的Finalize(实现的情况下),C#中使用~ClassName表示FinalizeIn most cases, you do not need to write classes that derive from the CriticalFinalizerObject class. The .NET Framework class library provides two classes, SafeHandle and CriticalHandle, that provide critical finalization functionality for handle resources. Furthermore, the .NET Framework provides a set of prewritten classes derived from the SafeHandle class, and this set is located in the Microsoft.Win32.SafeHandles namespace. These classes are designed to provide common functionality for supporting file and operating system handles. System.Runtime.ConstrainedExecution 下的 CriticalFinalizerObject 抽象对象,CLR特殊对待 System.Runtime.InteropServices下的派生抽象类 SafeHandle CriticalHandle 和SafeHandle只是引用计数的区别Microsoft.Win32.SafeHandles  SafeFileHandle,SafeRegistryHandle ,SafeWaitHandle... SafeProcessHandle SafeLibraryHandle SafeLocalMemHandle SafeThreadHandle等MSDN没有编写,但同样是处理这个问题的 类似的实现的不同类代表不同的资源类型,这么多的类似,主要是为了类型安全SafeHandle的作用:1、以前的IntPtr形式不够健壮,如在IntPtr赋值前可能抛出ThreadAbortException异常,这样托管代码将造成本地资源的泄露2、防止利用潜在的安全漏洞,一个线程访问一个本地资源,另一个线程释放该资源,通过引用计数实现 对托管资源只有在极少数情况下才使用终结器 终结器被调用的时刻:1、第0代满:2、显式调用GC.Collect3、Windows报告内存不足4、CLR卸载AppDomain5、CLR关闭 内部实现使用终结列表保留对象,通过这个GC进行处理, freachable队列 =Dispose终结器的调用时间由GC确定,调用者无法显式调用它Dispose提供了显式清理资源的能力 GCHandle WeakReference System.Runtime.CompilerServices.ConditionalWeakTable 加入时的是对象的WeakReference,因此可能会回收,但可以确保只要key存在,value也是存在的 任何大于85000字节的对象被自动认为是大对象,大对象在大对象堆中分配 ==大量资源GCpublic static void AddMemoryPressure(Int64 bytesAllocated);   public static void RemoveMemoryPressure(Int64 bytesAllocated);提示GC实际需要消耗的内存,然后GC监视内存压力,压力变大时,强制回收 System.Runtime.InteropServices  HandleCollector 数量有限的本地资源 MemoryFailPoint在需要大量内存前可以先检查是否可以使用这么大的内存 GC的监视代码形式: GC.GetTotalMemory GC.CollectionCountPerMon.exe系统性能监视工具CLR Profiler工具FUSLOGVW.execlrver.exeSvcTraceViewer.exe

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • Effective Modern C++ 中文.pdf
    Effective Modern C++ 中文.pdf
    2020-11-28下载
    积分:1
  • qq登陆界面开发 例子源码
    qq登陆界面开发 例子源码
    2015-05-21下载
    积分:1
  • C# 调用摄像头照相 例子源码
    C# 调用摄像头照相 例子源码
    2015-01-07下载
    积分:1
  • C#窗体移动图片例子
    C# 像网页图片滚动一样的动画效果
    2015-04-24下载
    积分:1
  • QQ模拟登陆 源码下载
    QQ模拟登陆 源码下载
    2014-07-12下载
    积分:1
  • 人力资源管理系统源码
    主要功能 随着全球对知识和人才的重视,企业对人力资源管理重要性的认识逐渐深化,人才的全球化竞争使企业的人力资源管理面临前所未有的挑战。在新形势下,人力资源管理系统是一个企业单位不可缺少的部分,是适应现代企业制度,推动企业人力资源管理走向科学化、规范化、自动化的必要条件;是应对挑战、适应环境变化、提高企业管理效率、提升核心竞争力的关键措施。本系统主要对人事的部门、工种、职务、职称、文化程度、政治面貌、民族、工资、奖励、惩罚、合同等信息进行管理,还提供了员工在部门之间的调动、工种、职务、职称的调动和员工信息查找等功能。 业务流程 在使用本系统时,请按照以下流程进行操作: (1)在“系统管理”菜单中的“用户管理”模块中添加操作员并设置操作员权限。 (2)在“基本资料管理”菜单下的模块中添加基本信息。 (3)在“工资设置”菜单下的模块中添加工资的奖励与惩罚项目。 (4)在“人事管理”菜单中的“人事信息管理”模块中添加人员信息。 在“人事管理”菜单中的“员工调动”模块中可以对员工的部门等信息进行调动。 (5)在“人事管理”菜单中的“合同管理”模块中对员工的合同进行管理。 (6)在“工资管理”菜单中的“建立新月份工资”模块中建工资月份。 (7)在“工资管理”菜单中的“员工奖励管理”、“员工惩罚管理”、“工资信息管理”模块中分别设置员工本月份的奖励金额、惩罚金额及本月份的工资。 (8)单击“退出”菜单按钮,退出该系统。
    2015-11-01下载
    积分:1
  • 医院体检管理系统(设计文档+源码).rar
    文档部分:有软件工程开发全过程,包含需求分析,概要设计,数据库设计,详细设计以及小工程表和大工程表的设计模版等等,是一个较为完备的一套设计思路。 源码功能:内有数据库设计,用户注册,登陆,修改密码界面;主界面有体检登记,项目预览和预定,体检费用统计和项目录入,同时还有结果的录入;系统管理员还有对数据导入和导出的权限
    2019-10-14下载
    积分:1
  • c#smtp发邮件代码
    c#smtp发邮件代码
    2015-06-16下载
    积分:1
  • NS3仿真软件与外部通信(code.cc)
    NS3仿真软件与外部通信
    2021-05-06下载
    积分:1
  • 通过api获取网易云音乐歌曲信息(获取mp3地址以及在线播放)
    通过api获取网易云音乐歌曲信息(获取mp3地址以及在线播放)
    2018-09-15下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载