面试问GC时需要注意的问题

news/2024/7/20 14:57:39 标签: 面试, 内存管理, c#

A:知道GC吗?

B:知道

A:那请你解释一下。

BNET 平台在内存管理方面提供了GCGarbage Collection),负责自动释放托管资源和内存回收的工作,就是所谓的垃圾回收机制。.NET的垃圾回收机制,用root定时的遍历heap,查看对象是否在内存中引用,如果没用引用的释放资源。

A:好的,是不是所以的资源都可以通过GC回收了。

B:不是。

A:是什么资源不能通过GC回收呢?你能不能说一下怎样手动释放资源吗?

A:类支持IDisposable接口,在每次使用完对象后,立即通过手工Dispose()方法,或者利用Using块隐式的强制调用Dispose()方法,实现在对象的立即销毁。在Dispose()方法中,将调用Dispose()方法的带一个布尔参数的重载,在该重载函数中,手工编写代码释放对象所打开的所有托管和非托管资源。

 

综上,在此问中需要掌握两点,一是掌握GC的定义及原理,二是掌握不依赖GC怎样手动回收。当时被问手动回收的时候比较郁闷,因为我从来没有注意过,所以没有答上来。写在这里希望面试时遇到此问题可以很好的回答。

 

参考:如何手工释放资源?

      C#中对象的销毁和内存回收

      http://kb.cnblogs.com/page/42334/

转载于:https://www.cnblogs.com/liuhai250485/archive/2008/12/10/1352094.html


http://www.niftyadmin.cn/n/1161549.html

相关文章

IRQL深入解析--IRQL级别

IRQL Interrupt Request Level.即中断执行的优先级。一个由windows虚拟出来的概念,划分在windows下中断的优先级,这里中断包括了硬中断和软中断,硬中断是由硬件产生,而软中断则是完全虚拟出来的。 IRQL Interrupt Request.中断请…

java设计模式(1)--代理模式及动态代理类

代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式一般涉及到的角色有: 抽象角色&#xf…

WDM驱动和NT式驱动

Win32设备驱动程序体系结构 目前,由于需要支持新的业务和新的PC外部设备类型对驱动程序开发造成了新的挑战。新型总线增加了设备的数量和对设备驱动程序的需求。设备上各种功能的不断增加使驱动程序的开发变得越来越复杂。同时,快速反应的交互式应用程序…

一声叹息

人为什么要叹息,据说有科学家曾经做过一个实验,把人忧郁时叹出的空气液化后会变成淡紫灰色的液体,然后注入小白鼠体内,会导致小白鼠死亡。 最近真的很不爽,请允许我在这里大大的叹口气,允许我以我个人的名义…

驱动主动通知应用程序和64位和32位内核的开发区别

其实是应用程序使用 DeviceIoControl 发送请求,内核使用独享的同步事件(KEVENT)来等待. 当内核想发送数据给应用程序时就设置事件即可. 在应用程序中因为要等待 DeviceIoControl 函数的返回,所以应用程序应该新开一个线程来做这件事情. 内核中的缓冲区链表结构 内核使用一个 双…

wpf双向数据绑定跟用户控件.

12.23 今天上午终于把自己的双向数据绑定数据库给弄出来了.原来是我有两句code位置写反了,结果导致怎么也无法更改数据库数据,今天费了好大的事才找到错误.原来错误很有可能发生在你最不注意的地方,以后出现错误一定要自己好好找找,好好想想哪里出错了. 上午还做的一点事就是找…

内核回调

相对于各种HOOK的安全性、稳定性问题,我更喜欢使用回调来做各种监视 虽然回调函数获取各种信息的时间偏后于先手HOOK获取各种信息的时间,而且不一定可以拦截到什么,但是这更安全。 PsSetCreateProcessNotifyRoutine 进程创建回调&#xff0…

[转载]--读设计的3个C之构图

哪行哪业都少不了基本功,都说“马步”要扎得稳。在都快说烂了的以目标用户为中心设计的今天,还是要勤练基本功的。不多说了,先了解下“设计的3个C”: 一、构图(Composition): 一个设计的构成因素如何在视觉上结合安排。…