托管资源

由公共语言运行时(CRL)控制的内存资源,系统可以自行分配和回收的资源;例如程序中分配的对象,作用域内的变量等

非托管资源

是CLR不能控制或者管理的部分,例如文件读取,数据库连接,窗口句柄,图标,打印机资源等,必须在调用或使用后,通过 Finalize或Dispose 手动释放.文件读取和数据库连接需要调用Close()方法关闭并释放资源.

注意,不能在析构函数中释放托管资源,因为析构函数是有垃圾回收器调用的,可能在析构函数调用之前,类包含的托管资源已经被回收了,从而导致无法预知的结果。

GC垃圾回收器

当系统内存资源匮乏时,它就会被激发,然后自动的去释放那些没有被使用的托管资源。

工作原理

遍历托管堆中的对象,标记被使用对象(没被使用的就是所谓的垃圾),然后把可达对象转移到一个连续的地址空间(也叫压缩),其余的所有没用的对象内存被回收掉。

GC进行垃圾回收时的主要流程是?

(1)标记 ,找到并创建所有活动对象的列表。

(2)重定位 ,用于更新对将要压缩的对象的引用。

(3)压缩 ,用于回收由死对象占用的空间,并压缩幸存的对象。 压缩阶段将垃圾回收中幸存下来的对象移至段中时间较早的一端。

GC在哪些情况下回进行回收工作?

(1)系统具有低的物理内存。 这是通过 OS 的内存不足通知或主机指示的内存不足检测出来。

(2)由托管堆上已分配的对象使用的内存超出了可接受的阈值。 随着进程的运行,此阈值会不断地进行调整。

(3)调用 GC.Collect 方法。 几乎在所有情况下,你都不必调用此方法,因为垃圾回收器会持续运行。 此方法主要用于特殊情况和测试。

什么是托管资源,什么是非托管资源相关推荐

  1. 什么是托管,什么是非托管

    NET Framework 是一种新的计算平台,它简化了在高度分布式 Internet 环境中的应用程 序开发..NET Framework 旨在实现下列目标: 提供一个一致的面向对象的编程环境,而无 ...

  2. C# 托管资源和非托管资源

    原文地址:http://blog.csdn.net/zlwzlwzlw/article/details/7918633 托管资源指的是.NET可以自动进行回收的资源,主要是指托管堆上分配的内存资源.托 ...

  3. C# 托管资源和非托管资源(Dispose、析构函数)

    https://www.cnblogs.com/herenzhiming/articles/9691524.html 资源分类: 托管资源指的是.NET可以自动进行回收的资源,主要是指托管堆上分配的内 ...

  4. 托管资源和非托管资源

    在.net 编程环境中,系统的资源分为托管资源和非托管资源. 对于托管的资源的回收工作,是不需要人工干预回收的,而且你也无法干预他们的回收,所能够做的只是了解.net CLR如何做这些操作.也就是说对 ...

  5. 团队协作新趋势:语雀——助力更多:个人、企业、博客、协作、托管、画布设计、资源托管(立体化趋势)

    团队协作 · 业务模式 · 新趋势: 语雀:个人.企业.博客.协作.托管.画布设计.资源托管(立体化趋势) 博主自留地,请勿瞎踩 官方文档: 语雀官方入口:https://www.yuque.com/ ...

  6. C# 托管资源与非托管资源

    C# 托管资源与非托管资源 在.net 编程环境中,系统的资源分为托管资源和非托管资源. 托管资源: Net平台中,CLR为程序员提供了一种很好的内存管理机制,使得程序员在编写代码时不要显式的去释放自 ...

  7. 编写高质量代码改善C#程序的157个建议——建议50:在Dispose模式中应区别对待托管资源和非托管资源...

    建议50:在Dispose模式中应区别对待托管资源和非托管资源 真正资源释放代码的那个虚方法是带一个bool参数的,带这个参数,是因为我们在资源释放时要区别对待托管资源和非托管资源. 提供给调用者调用 ...

  8. .NET中的托管资源与非托管资源

    托管资源指的是.NET可以自动进行回收的资源,主要是指托管堆上分配的内存资源.托管资源的回收工作是不需要人工干预的,有.NET运行库在合适调用垃圾回收器进行回收. 非托管资源指的是.NET不知道如何回 ...

  9. C#Maeshal类——托管资源和非托管资源转换

    C#--Marshal.StructureToPtr方法简介 http://blog.csdn.net/livelylittlefish/article/details/2423764         ...

  10. 自建私有云与公有云托管对比_共享托管和云托管的比较以及如何选择

    自建私有云与公有云托管对比 Do you keep hearing about cloud hosting and wonder how it differs from a regular hosti ...

最新文章

  1. 智能车竞赛技术报告 | 全向行进组 - 沈阳工业大学 - 找不到北队
  2. ASP.NET页面传值的几种方式
  3. (原創) array可以使用reference方式傳進function嗎? (C/C++)
  4. 网页爬虫python代码_Python 爬虫web网页版程序代码
  5. Linux内核spin_lock与spin_lock_irq分析
  6. Qt动画框架Animation Framework
  7. Kafka学习笔记-Java简单操作
  8. libevent简介和使用
  9. Android service 中的stub类
  10. java 命令行读取_Java:从控制台(console,命令行)读取字符 | 学步园
  11. yii2通过url访问类中的方法_行为型设计模式 访问者模式
  12. 上海java 开发培训_上海十大java培训
  13. 14. Nginx 服务器架构
  14. c语言结构体stamp是什么意思,stamp是什么意思
  15. mac m1 eclispe安装暗黑主题
  16. 动词变名词的变化规则_动词变名词的变化规则例子
  17. 代码大全(第2版)_2021【公式大全3.0版】【(数一)第371页】【(数二)第283页】【(数三)第324页】【有关矩阵秩的重要结论】6)~...
  18. Locust学习笔记5——登录接口参数关联
  19. Idear常用快捷键
  20. python:水果与设计模式-原型模式

热门文章

  1. MySQL复习笔记【上】
  2. CTF训练-牛刀小试-聪明的小羊
  3. IPhone 手机屏幕 不显示了。 只有一个背景界面。其他都不显示。怎么回事。
  4. 国庆第七日(2014年10月7日17:55:56),随手记,一些关注的OSC软件,花生壳
  5. Selenium原理介绍
  6. c语言二的n次方,c语言练习之路(二阶方阵的n次方)
  7. 前端初学之利用html,css,js实现车牌摇号程序(一)
  8. excel中如何输入数组公式详细介绍
  9. angular+ng-zorro后台搜索页面
  10. java计算机毕业设计web智慧医疗平台设计与实现MyBatis+系统+LW文档+源码+调试部署