Finalize方法与Dispose方法区别
1、 Finalize只释放非托管资源;
2、 Dispose释放托管和非托管资源;   // D 是神的天敌
3、 重复调用Finalize和Dispose是没有问题的;
4、 Finalize和Dispose共享相同的资源释放策略,因此他们之间也是没有冲突的。
5、C#中不可以直接使用finalize方法,而是在析构函数中调用基类的finalize()方法。

Garbage Collection CLR的垃圾回收机制

GC仅负责托管资源的释放,对于stream,数据库连接,GDI+对象,COM对象这种非托管资源是不处理的

值类型分配在栈上,不需要GC处理,引用类型分配在堆上,需GC处理,GC判断的标准就是引用类型的对象的引用还有没有效

简要概括就是:GC仅处理堆上的托管资源

GC安排了独立的线程,查询内存中的内容是否为垃圾

垃圾又分为两种,一种是需要调用对象的析构函数,另一种是不需要调用析构函数(不是很明白)。对于前者的回收,需要两步,第一步是调用对象的析构函数,第二步是回收内容

(注意这两步需要2次GC轮询),对于后者,仅是内存回收

 

三种处理非托管资源的方法

1.析构函数(没懂)

2.实现IDisposable接口

3.提供close方法(没懂)

C#-GC基础(待补充)的更多相关文章

  1. GC 基础

    = GC 基础 ===================== JAVA堆的描述如下: 内存由 Perm 和 Heap 组成. 其中 Heap = {Old + NEW = { Eden , from, ...

  2. GC 基础(转)

    转自:http://blog.csdn.net/ning109314/article/details/10411495/ = GC 基础 ===================== JAVA堆的描述如 ...

  3. GC基础知识

    内存溢出和内存泄漏 内存溢出(Out Of Memory) 就是申请内存时,JVM没有足够的内存空间.通俗说法就是去蹲坑发现坑位满了. 内存泄露 (Memory Leak) 就是申请了内存,但是没有释 ...

  4. Java GC基础

    Java的垃圾回收机制负责回收无用对象占据的内存资源,但是有特殊情况:假定对象不是使用new关键字获得了一块儿“特殊”的内存区域,

  5. JAVA面试题集之基础知识

                           JAVA面试题集之基础知识 基础知识:  1.C 或Java中的异常处理机制的简单原理和应用. 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就 ...

  6. [译]GC专家系列1: 理解Java垃圾回收

    原文链接:http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection/ 了解Java的垃圾回收(GC)原 ...

  7. Java GC专家系列1:理解Java垃圾回收

    了解Java的垃圾回收(GC)原理能给我们带来什么好处?对于软件工程师来说,满足技术好奇心可算是一个,但重要的是理解GC能帮忙我们更好的编写Java应用程序. 上面是我个人的主观的看法,但我相信熟练掌 ...

  8. java面试基础题(三)

    程序员面试之九阴真经 谈谈final, finally, finalize的区别: final:::修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此 ...

  9. 讨论.NET Core 配置对GC 工作模式与内存的影响

    引出问题: Asp.net core应用在 Kubernetes上内存使用率过高问题分析 https://mp.weixin.qq.com/s/PqhUzvFpzopU7rVRgdy7eg 这篇文章中 ...

随机推荐

  1. Springboot分布式锁实践(redis)

    springboot2本地锁实践一文中提到用Guava Cache实现锁机制,但在集群中就行不通了,所以我们还一般要借助类似Redis.ZooKeeper 之类的中间件实现分布式锁,下面我们将利用自定 ...

  2. Spring 注解学习笔记

    声明Bean的注解: @Component : 组件,没有明确的角色 @Service : 在业务逻辑层(service层)使用 @Repository : 在数据访问层(dao层)使用. @Cont ...

  3. A server is already running. Check tmp/pids/server.pid.

    A server is already running. Check  tmp/pids/server.pid. 把server.pid删除: 学习了: http://stackoverflow.co ...

  4. UI组件之AdapterView及其子类(三)Spinner控件具体解释

    Spinner提供了从一个数据集合中高速选择一项值的办法. 默认情况下Spinner显示的是当前选择的值.点击Spinner会弹出一个包括全部可选值的dropdown菜单或者一个dialog对话框,从 ...

  5. poj--1236--Network of Schools(scc+缩点)

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14062   Accepted: 56 ...

  6. nyoj--114--某种序列(滚动数组)

    某种序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 数列A满足An = An-1 + An-2 + An-3, n >= 3  编写程序,给定A0, A1 和 ...

  7. CXF2.7.7 java.lang.RuntimeException: Cannot create a secure XMLInputFactory

    cxf-2.7.7.jar neethi-3.0.2.jar stax2-api-3.1.1.jar woodstox-core-asl-4.2.0.jar wsdl4j-1.6.3.jar xmls ...

  8. 在阿里云的iis上安装php扩展

    具体参照http://jingyan.baidu.com/article/11c17a2c5ce349f447e39d6d.html

  9. Bata版本

    一.团队成员 1)冯鹏(组长) 201731062617 2)鲜泽   201731062612 3)李家豪 201731062614 4)郭经伟 201731062615 5)程前勇 2017310 ...

  10. Caffe solver.prototxt学习

    在solver解决下面的四个问题: a.训练的记录(bookkeeping),创建用于training以及test的网络结构: b.使用前向以及反向过程对training网络参数学习的过程: c.对t ...