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

GC 垃圾回收算法

于 2012-12-16 发布
0 239
下载积分: 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# 开发海康(实时预览示例)
    2021-05-06下载
    积分:1
  • wpf 漂亮的UI界面(含左侧导航菜单)
    wpf 漂亮的UI界面(含左侧导航菜单)
    2019-03-19下载
    积分:1
  • Log4net 常用类Logger 示例源码
    Log4net 常用类Logger 示例源码
    2014-10-16下载
    积分:1
  • WPF IM聊天实例源码下载
    不错的wpf IM聊天程序,实现了基本的聊天功能 注意事项: 1.在自己的机器配置的话,客户端需要更改 config目录下的 IPAddress.xml文件,将其中的ip 改成自己本机ip(本机ip可通过 cmd ipconfig命令查看) 2. server端 则需要将 server/data/目录下的chatdata.mdf这个数据库附加下,同时修改程序中对应的数据库连接串(在DataLink.cs中),例如 我就修改成了这个 private static string Link = @"Data Source = localhost;Initial Catalog = ChatData;User Id = sa;Password = xxxx;";  大家根据自己的情况修改即可    客户端登陆账号:10007 密码:123456
    2015-05-01下载
    积分:1
  • C#学生选课管理系统(源码+数据库+文档)
    模块功能: 1、用户登入模块:管理员、教师、学生。 2、管理模块:系统管理、选课管理、实现总体查询。 3、学生模块:浏览信息、选课系统、查询自己的课程成绩、修改密码等。 4、老师模块:浏览信息、选课系统、查询课表、修改密码。 5、退出系统:管理员、教师、学生。
    2019-07-16下载
    积分:1
  • xml 加密 解密 文件内容
    xml 加密 解密 文件内容
    2014-03-15下载
    积分:1
  • NET开发邮件发送功能
    NET开发邮件发送功能
    2014-03-09下载
    积分:1
  • 动画效果浮动窗体实例
            private void StopRectTimer_Tick(object sender, EventArgs e)        {            //如果鼠标在窗体上,则根据停靠位置显示整个窗体              if (this.Bounds.Contains(Cursor.Position))            {                switch (this.StopDock)                {                    case AnchorStyles.Top:                        this.Location = new Point(this.Location.X, 0);                        break;                    case AnchorStyles.Bottom:                        this.Location = new Point(this.Location.X, Screen.PrimaryScreen.Bounds.Height - this.Height);                        break;                    case AnchorStyles.Left:                        this.Location = new Point(0, this.Location.Y);                        break;                    case AnchorStyles.Right:                        this.Location = new Point(Screen.PrimaryScreen.Bounds.Width - this.Width, this.Location.Y);                        break;                }            }            else  //如果鼠标离开窗体,则根据停靠位置隐藏窗体,但须留出部分窗体边缘以便鼠标选中窗体              {                switch (this.StopDock)                {                    case AnchorStyles.Top:                        this.Location = new Point(this.Location.X, (this.Height - 3) * (-1));                        break;                    case AnchorStyles.Bottom:                        this.Location = new Point(this.Location.X, Screen.PrimaryScreen.Bounds.Height - 5);                        break;                    case AnchorStyles.Left:                        this.Location = new Point((-1) * (this.Width - 3), this.Location.Y);                        break;                    case AnchorStyles.Right:                        this.Location = new Point(Screen.PrimaryScreen.Bounds.Width - 2, this.Location.Y);                        break;                }            }        }
    2015-06-10下载
    积分:1
  • USB转spi IIC UART 上位机源码
    【实例简介】USB转spi IIC UART 上位机源码
    2021-07-03 00:31:11下载
    积分:1
  • webapi实现文件上传下载
    实现文件数据上传下载,更加快速实现。
    2020-05-14下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载