易截截图软件、单文件、免安装、纯绿色、仅160KB

asp.net面试答案补充3 .net的垃圾回收机制

.net 垃圾回收机制 【转帖】
2009-02-13 17:44
net内存回收与Dispose﹐Close﹐Finalize方法
一. net的对象使用一般分为三种情况﹕
1.创建对象
2.使用对象
3.释放对象
二.创建对象
1.创建对象实际分为两个步骤﹕变量类型宣告和初始化对象
2.变量类型宣告(declare),如﹕
FileStream fs
这行代码会在当前的变量作用域空间(栈或堆)里建立一个叫做fs的变量﹐至少四个字节吧(因为要存一个对象的地址)
3.初始化对象
对象在使用(调用其方法或属性)前﹐必须进行初始化。
如﹕
fs = new FileStream(@"C:\test.txt",FileMode.OpenOrCreate);
这行代码会分成3个步骤﹕
a.在托管堆中分配一块内存﹐其大小等于FileStream中所有字段(当然不包括静态的)的内存总和加上MS认为需要的其它东东。
b.初始化对象的字段(值类型的把其位全部初始化成0,对象初始化为null﹐当然string是一个例外﹐它被初始化成空字符串)
c.调用FileStream相应的构造器﹐这里会初始化一个非托管资源(文件)的私有字段。
三.使用对象
使用对象就没什么讲的﹐就是调用对象的方法(或属性等)来完成某个功能当然为了释放对象而调用的方法其范畴应不属于此类中(现在提到的Finalize等)
四.释放对象
1.释放对象也就是说这个对象我已经不需要了﹐现在我要把其释放﹐以便把其在堆上所占用的内存空间给收回来(当然变量名的内存空间就不需要管了﹐因为它会随其作用域自动消失)
2. .net自动进行内存管理﹐也就是说当它判断一个对象没有用了(当然有自己的算法)﹐它就会将其内存给自动收回来﹐但是其收回的时间一般不确定(当.net认为内存紧张时﹐它就会开始)
BTW:其实我们就是想自己收回对象的内存也不可能﹐因为MS没有提供途径(GC.Collect也是启动.net的内存收集功能)
五.第一个结论
在net中使用对象很简单﹐创建对象之后直接使用就可以了﹐不用了也不要去管它﹐垃圾收集器会帮你把内存要回来的。
六.例外
当对象的成员引用了一个非托管资源时(不在托管堆上分配的内存或资源﹐像文件﹐数据库连接等等)﹐下面以一个例子来说明﹕
System.IO.FileStream类别﹐这是.net基本类库提供的一个非托管资源(文件)封装对象(用Reflector工具反编译mscorlib.dll可见其代码)
1.FileStream毫无疑问封装了


相关文档:

asp.net 将HTML文件当ASPX文件解析

首先在应用程序的WEB.CONFIG修改如下节点。
<httpHandlers>
    <add verb="*" path="*.html" type="System.Web.UI.PageHandlerFactory"/>
</httpHandlers>
<assemblies>
    <buildProviders>
        <add ext ......

Silverlight应用程序中如何获取ASP.NET页面参数

概述
在开发Silverlight应用程序时,我们经常会遇到这样一种情况,需要在Silverlight应用程序的UserControl中获取ASP.NET页面参数,这个参数不一定来自于当前Silverlight应用程序的宿主页面,而有可能来自于其它的ASP.NET页面。
本文我们简单的介绍一下如何在Silverlight应用程序中获取ASP.NET页面参数。
需求
如下面的 ......

ASP.net错误处理(错误跳转页 webconfig)


使用定制错误页面
  
   虽然我们发送给用户的公用错误信息是安全的,就是说它不会威胁到应用程序的秘密,但是这样的信息并不好看。也许你希望用户永远也看不到这样的信息。相反,当处理请求的过程中,如果发生了一个为处理的错误,你希望能够显示自己的“定制错误页面”,显示出自己的 ......

asp.net面试答案补充2 aspx页面以及全局事件

aspx页面中事件的执行顺序
1.asp.net的请求过程,以及对应的处理请求的dll
客户的请求页面由aspnet_isapi.dll这个动态连接库来处理,把请求的aspx文件发送给CLR进行编译执行,然后把Html流返回给浏览器
2.页面事件(按照事件的执行顺序排列)
Page_Init:初始化值或连接
Page_Load:主要使用IsPostBack,该事件主要执行 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号