由于内存是由GC来控制,无论对象网是简单的还是复杂的,都不需要开发者手工去管理,因为GC的Mark and Compact算法会迅速的检测这些关系,并把那些不可达的对象视为一个整体从内存清理出去。

1、GC的检测过程是从应用程序的根对象出发,把与该对象之间没有通路相连的那些对象判定为不可达的对象。应用程序如果不再使用某个实体,那么就不会继续引用它,于是,GC就会发现这个实体是可以回收的。

垃圾回收器每次运行的时候,都会压缩托管堆,以便把其中的活动对象安排在一起,使得空闲的内存能够形成一块连续的区域。类似下图所示:

2、针对托管堆(CLR中内存管理的基础,维护着一个指针,用它指向将在堆中分配的下一个对象的地址)的内存管理工作完全是由垃圾回收器负责,但除此之外的其它资源则必须有开发者来管理。

3、有两种机制可以控制非托管资源的生存期,一种是finalizer,另外一种是IDisposable接口。

finializer是一种防护机制,可以确保对象总是能够把非托管资源释放掉,但这种机制有很多缺陷(没有补充原因),于是,应该考虑通过IDisposable接口来更为顺畅的将资源及时返还给系统。

 

 

【Effective C#读书笔记】

 

posted @ 2022-12-04 18:01 yuzaihuan 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 遍历”Day1-homework”目录下文件; 找到文件名包含“2020”的文件; 将文件名保存到数组result中; 按照序号、文件名分行打印输出。 1 import os 2 #待搜索的目录路径 3 path = "Day1-homework" 4 #待搜索的名称 5 filename = "2 阅读全文
posted @ 2020-06-25 09:52 yuzaihuan 阅读(958) 评论(1) 推荐(0) 编辑
摘要: 输出 9*9 乘法口诀表 1 def table(): 2 #在这里写下您的乘法口诀表代码吧! 3 for i in range(1, 10): 4 for j in range(1, i+1): 5 print('{}x{}={}\t'.format(j, i, i*j),end='') 6 pr 阅读全文
posted @ 2020-06-24 08:44 yuzaihuan 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 机器学习--Python实践一书读写笔记 阅读全文
posted @ 2020-06-20 08:22 yuzaihuan 阅读(227) 评论(0) 推荐(0) 编辑
摘要: Machine Learning入门-Python实践一书读书笔记 阅读全文
posted @ 2020-06-20 08:14 yuzaihuan 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 机器学习--Python实践一书的读书笔记 阅读全文
posted @ 2020-06-13 10:06 yuzaihuan 阅读(1083) 评论(1) 推荐(1) 编辑
摘要: 机器学习-python实践,读书摘录 阅读全文
posted @ 2020-06-08 08:38 yuzaihuan 阅读(1639) 评论(2) 推荐(0) 编辑
摘要: 机器学习-python实践,读书摘录 阅读全文
posted @ 2020-05-30 09:31 yuzaihuan 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 机器学习-python实践,读书摘录 阅读全文
posted @ 2020-05-26 08:59 yuzaihuan 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 机器学习-python实践,读书摘录 阅读全文
posted @ 2020-05-25 08:27 yuzaihuan 阅读(227) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示