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

GC 垃圾回收算法

于 2012-12-16 发布
0 251
下载积分: 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 个回复

  • C# 短信猫 发短信例子源码
    C# 短信猫 发短信例子源码
    2015-07-01下载
    积分:1
  • 用 C#制作 PDF 文件全攻略(PDF)
    第一部分 iText的简单应用  第二部分 其他文档格式第三部分 iText的高级应用
    2014-04-14下载
    积分:1
  • c++的大整数运算(支持二进制以及十进制的加、减、乘、除)
    【基本要求】 1.       要求采用链表来实现大整数的存储和运算,不允许使用标准模板类的链表类(list)和函数。同时要求可以从键盘输入大整数,也可以文件输入大整数,大整数可以输出至显示器,也可以输出至文件。大整数的存储、运算和显示,可以同时支持二进制和十进制,但至少要支持十进制。大整数输出显示时,必须能清楚地表达出整数的位数。测试时,各种情况都需要测试,并附上测试截图;要求测试例子要比较详尽,各种极限情况也要考虑到,测试的输出信息要详细易懂,表明各个功能的执行正确; 2.       要求大整数的长度可以不受限制,即大整数的十进制位数不受限制,可以为十几位的整数,也可以为500多位的整数,甚至更长;大整数的运算和显示时,只需要考虑正的大整数。如果可能的话,请以秒为单位显示每次大整数运算的时间; 3.       要求采用类的设计思路,不允许出现类以外的函数定义,但允许友元函数。主函数中只能出现类的成员函数的调用,不允许出现对其它函数的调用。 4.       要求采用多文件方式:.h文件存储类的声明,.cpp文件存储类的实现,主函数main存储在另外一个单独的cpp文件中。如果采用类模板,则类的声明和实现都放在.h文件中。 5.       不强制要求采用类模板,也不要求采用可视化窗口;要求源程序中有相应注释; 6.       要求采用Visual C 6.0及以上版本进行调试; 二、设计思路: 主要采用小学生竖式的思路。 加法:从最小的位开始逐位相加,十进制逢十进一(二进制,逢二进一) 减法:从最小位开始,逐位相减,位数不够则从高位退位,低位加十(二进制则加二) 乘法:和竖式乘法的原理相同,建立在加法的基础上,逐位相乘,再按位相加 除法:除法是建立在减法的基础上,但逐个相减的效率太低,先把除数乘以两数的位数之差的10的乘方倍。被除数能够减去除数的个数,即为商,剩下的即为余数,再把余数当做被除数,除数不变,如此循环,把每个循环的得到的商乘以除数扩大的倍数,相加。直到所得的余数小于除数结束运算。 乘方:建立在乘法的基础上,执行指数-1次底数的乘法,每次执行完都指数减一。最后累乘的结果即为最后的结果 三、设计结构: 主要包括两个类,一个list类,一个calculate类。 List类中包括所有的单独对一条链表的操作,如创立链表,输出,添加节点,删除节点,以及对链表数值的操作。 Calculate类中包括所有的涉及两条链表的操作,如两条链表大小的比较,大整数的加减乘除和乘方操作,以及运算结果的输出。 详细操作与分析见源代码的注释
    2019-12-15下载
    积分:1
  • C# 下载地图碎片文件并自动并合的下载引擎 源码下载
    下载地图碎片文件并自动并合的下载引擎 例子
    2014-10-23下载
    积分:1
  • 西门子1200与labview通过以太网通信,包括 PLC和labview 的全套程序及使用说明,本人亲测能用
    西门子1200与labview通过以太网通信,包括 PLC和labview 的全套程序及使用说明,本人亲测能用,欢饮下载!
    2019-03-30下载
    积分:1
  • C# AForge照相例子源码下载
    C# AForge照相例子源码下载
    2015-04-29下载
    积分:1
  • C# 仿酷狗音乐打开关闭效果
    酷狗音乐打开关闭
    2015-06-29下载
    积分:1
  • 我的第一本C++书(游历C++世界的地图)o.pdf
    虽然C 语言纷繁复杂的语法规则让很多学习者望而却步, 但是, 在本书中, 你会发现C 语言的学习也可以如此轻松。 本书没有孔乙己式地去深究C 语言的语法细节, 也没有重点地去介绍各种高深的C 编程技巧, 而是本着简单实用的原则, 通俗易懂地向你介绍C 中最重要、最实用的知识。 看完本书, 你会发现用逻辑控制语句可以把C 语句串珠成链; 用函数实际上就是把程序装进一个箱子; 当C 语言爱上面向对象思想就有了类与对象;算法就像体育老师, 给我们带来一堂别开生面的算法体育课。 本书不再是一本枯燥乏味的C 语法介绍书, 而是一本通俗易懂的C 故事书, 可以让我们在讲故事中轻松学会C 语言。
    2021-05-06下载
    积分:1
  • C#与ABB机器人建立通讯,上位机软件开发
    C#与ABB机器人建立通讯,上位机软件开发
    2019-07-26下载
    积分:1
  • asp.net MVC3实例(含编辑器、登录、留、faq后台管理等功能)
    含编辑器功能
    2015-01-14下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载