惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
D
Docker
H
Help Net Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
C
Check Point Blog
S
SegmentFault 最新的问题
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
M
MIT News - Artificial intelligence
B
Blog RSS Feed
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
美团技术团队
I
InfoQ
Blog — PlanetScale
Blog — PlanetScale

博客园 - 十三

ASP.NET MVC5学习笔记之Action参数模型绑定之模型元数据和元数据提供 ASP.NET MVC5学习笔记之Action参数模型绑定值提供体系 ASP.NET MVC5学习笔记之Action参数模型绑定基本过程 ASP.NET MVC5学习笔记之Filter提供体系 ASP.NET MVC5学习笔记之Filter基本介绍 ASP.NET MVC5学习笔记之Controller执行ControllerDescriptor和ActionDescriptor ASP.NET MVC5学习笔记之Controller同步执行架构分析 ASP.NET MVC4学习笔记之Controller激活的扩展 ASP.NET MVC4学习笔记之Controller的激活 ASP.NET MVC4学习笔记路由系统实现 ASP.NET MVC4学习笔记路由系统概念与应用篇 ASP.NET MVC4学习笔记之总体概述 Web Capacity Analysis Tool 压力测试工具使用笔记 WCF完全解析读书笔记第2章地址 CLR via C# 混合线程同步构造 CLR via C# I/O基元线程同步构造 CLR via C# 计算限制的异步操作读书笔记 CLR via C# 线程基础知识读书笔记 CLR via C# 序列化读书笔记
CLR via C# 内存管理读书记
十三 · 2013-07-14 · via 博客园 - 十三

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方法时,如果不小心把对象赋给可达对象,意味着对象及其引用的对象又复活了,也可能导致内存和资源泄漏