1. CLR 垃圾回收采用基于代的机制, 在一次垃圾回收中存活下来的对象被提升到另一代

2. 在确认对象是否垃圾时,从一组根开始,根包括静态字段,方法参数,局部变量等

3. 使用CriticalFinalizerObject类型确保终结

4. 避免使用Finalize方法

a. 对象要花更长的时间来分配,指向它们的指针必须放到终结列表

b. 可终结对象会提升到较老的代,会增大内存压力

c. 可终结的对象导致应用程序速试为变慢,因为每人对象回收时必须进行额外处理

5. 使用Dispose模式强制清理资源

6. 基于代的垃圾回收算法做以下假设:

a. 对象越新,生存期越短

b. 对象越老,生存期越长

c. 回收堆的一部分速度快于回收整个堆

7. 托管对象只使用少许内存,但引用大量非托管资源,可使用以下方法通知CLR以监视内存压力

GC.AddMemoryPressure(Int64 bytesAllocated)

GC.RemovePressure(int bytesAllocated)

System.Runtime.InteropServices.HandleCollector

8.使MemoryFailPoint类预先检查分配大内存是否成功

9. 垃圾回收模式(工作站,服务器)

10. 大对象(>=85K)从一个特殊的大对象堆中分配,默认为2代

编码注意事项:

1. 如果定义了静态集合字段,并在程序运行过程中不断往集合中添加对象,一样会导致内存和资源泄漏,

因为静态字态是垃圾收集的根,该集合对象始终可达,意味着对象始终不会被垃圾收集

2. 定义Finalize方法时,如果不小心把对象赋给可达对象,意味着对象及其引用的对象又复活了,也可能导致内存和资源泄漏

转载于:https://www.cnblogs.com/jjyjjyjjy/p/3185096.html

CLR via C# 内存管理读书记相关推荐

  1. 【转】C#的内存管理:堆栈、托管堆与指针

    在32位的Windows操作系统中,每个进程都可以使用4GB的内存,这得益于虚拟寻址技术,在这4GB的内存中存储着可执行代码.代码加载的DLL和程序运行的所有变量,在C#中,虚拟内存中有个两个存储变量 ...

  2. 【转】.net框架读书笔记---CLR内存管理\垃圾收集(四)

    弱引用 当一个根指向一个对象时,该对象不可能被垃圾收集器收集,在这种情况下,通常说存在一个该对象的强引用(strong reference).垃圾收集器还支持弱引用(weak reference)的概 ...

  3. 【转】.net框架读书笔记---CLR内存管理\垃圾收集(三)

    接上一篇.net框架读书笔记---CLR内存管理\垃圾收集(二),主要学习了终止化对象(实现了Finalize方法的对象),了解了终止化对象的弊端,学习了通过实现IDisposable接口,通过Dis ...

  4. 【转】关于CLR内存管理一些深层次的讨论[下篇]

    <上篇>中我们主要讨论的是程序集(Assembly)和应用程序域(AppDomain)的话题,着重介绍了两个不同的程序集加载方式--独占方式和共享方式(中立域方式):以及基于进程范围内的字 ...

  5. 读懂 JVM 内存管理这篇就够了

    读懂 JVM 内存管理这篇就够了 JVM 的内存结构 程序计数器 作用 概述 PC寄存器的常见问题 虚拟机栈 栈中可能出现的异常 栈的存储单位 栈运行原理 栈帧的内部结构 局部变量表 槽 Slot 操 ...

  6. 一文读懂JVM虚拟机:JVM虚拟机的内存管理(万字详解)

    JVM虚拟机的内存管理 文章目录 JVM虚拟机的内存管理 JVM与操作系统 Java虚拟机规范和 Java 语言规范的关系 java虚拟机的内存管理 JVM整体架构 一.PC 程序计数器 二.虚拟机栈 ...

  7. .NET中的内存管理,GC机制,内存释放过程

    引言:作为一个.NET程序员,我们知道托管代码的内存管理是自动的..NET可以保证我们的托管程序在结束时全部释放,这为我们编程人员省去了不少麻烦,我们可以连想都不想怎么去管理内存,反正.NET自己会保 ...

  8. linux-glibc内存管理小结2(内存相关系统调用的实现)

    在上一节ptmalloc源码分析中我们提到dlmalloc向系统申请内存的方式有两种, 对应Linux系统下分别是sbrk()与mmap()系统调用. 本节我们就来看下brk()/sbrk()与mma ...

  9. Linux堆内存管理深入分析(上)

    Linux堆内存管理深入分析 (上半部) 作者:走位@阿里聚安全   0 前言 近年来,漏洞挖掘越来越火,各种漏洞挖掘.利用的分析文章层出不穷.从大方向来看,主要有基于栈溢出的漏洞利用和基于堆溢出的漏 ...

最新文章

  1. UA MATH571A 多元线性回归I 模型设定与推断
  2. 网络管理:3分钟排障秘技,一招胜过十年功 | 文末有彩蛋
  3. 给书配代码-电力经济调度(3):计及网络安全约束的经济调度模型
  4. boost::function_types::is_callable_builtin用法的测试程序
  5. Benny:只处理那些NVARCHAR字段,并且NTEXT也是小于4000个字符时的情况.不管类型.只管长度....
  6. android跨进程事件注入(程序模拟用户输入)
  7. php实现直播答题系统,直播答题解决方案
  8. xor和路径(codevs 2412)
  9. Professional C# 6 and .NET Core 1.0 - Chapter 43 WebHooks and SignalR
  10. 袁永福的博客系列文章链接集合
  11. 【Sublime Text3 】——代码片段
  12. 炸裂!跑P站上教微积分,年入170w...
  13. IDEA初始jsp模板和修改jsp模板
  14. 计算机word表格加法公式,如何插入公式以求和Word中表格的一列或一行?
  15. 使用 JMeter的性能测试
  16. 虚拟信用卡免费申请(工行E卡充值entropay虚拟信用卡)
  17. 解决Echarts使用tab切换时只显示第一个tab中图表,其他tab中图表不显示或显示不全问题
  18. RxJava-Introduction
  19. 洛谷-P1885-Moo-普及--分治
  20. html中设置网站全局颜色为黑白

热门文章

  1. JAVA中Math类的random()方法使用
  2. Silverlight开发廋身攻略(二)
  3. Js + Css的msn式的popup提示窗口的实现 (转自:月牙儿)
  4. 【Vue】样式穿透 ::v-deep的具体使用
  5. 删除桌面图标的小箭头
  6. 一加10 Pro的性能配置还是非常不错的
  7. 怎么用手机查看WiFi密码?
  8. 为什么越普通的男人越自信?
  9. 所有的生意都是在做两件事
  10. 最近和一个35岁的朋友聊天,他最近在找工作