当前位置: 首页 > news >正文

爱站网怎么打不开长沙seo优化排名

爱站网怎么打不开,长沙seo优化排名,网页游戏源码交易平台,嘉定区网站建设1、垃圾回收器GC GC(Garbage Collection)是.NET中的垃圾回收器。以应用程序的root为基础,遍历应用程序在Heap上动态分配的所有对象,通过识别它们是否被引用,来确定哪些对象是已经死亡的,哪些仍需要被使用。已经不再被…

1、垃圾回收器GC

GC(Garbage Collection)是.NET中的垃圾回收器。以应用程序的root为基础,遍历应用程序在Heap上动态分配的所有对象,通过识别它们是否被引用,来确定哪些对象是已经死亡的,哪些仍需要被使用。已经不再被应用程序的root或者别的对象所引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收。GC的开销通常很大,而且它的运行具有不确定性,微软的编程规范里是强烈建议你不要显式调用GC。但你的代码中还是可以使用.NET Framework中GC的某些方法进行手动回收,前提是必须要深刻理解GC的回收原理,否则手动调用GC在特定场景下很容易干扰到GC的正常回收甚至引入不可预知的错误。

在.NET Framework中,创建对象所用内存在托管堆中分配,垃圾管理器负责管理。在堆中可分配的内存,被CLR以块划分,以代[Gemeration]命名,初始分为256k、2M和10M三个代(0、1和2)。并且CLR可以动态调整代的大小。在堆创建的每一个对象都有一个Generation的属性。.NET Framework中约定,最近创建的对象,其Generation其值为0。创建时间越远代数越高。

强制垃圾回收用函数GC.Collect()GC.Collect(int32)参考为Generation,代码如下,

using System; 
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;namespace ConsoleApplication
{public class TestObject {public int Value = 100;public string Key = "cjavapy";}class Program{static void Main(string[] args){TestObject obj  =   new  TestObject();int  generation  =   0 ;generation  =  GC.GetGeneration(obj);Console.WriteLine(0);Console.WriteLine( " TotalMemory:{0} " , GC.GetTotalMemory( false ));Console.WriteLine( " MaxGeneration:{0} " , GC.MaxGeneration);Console.WriteLine( " Value:{0},Key:{1} " , obj.Value, obj.Key.Length);Console.WriteLine( " Generation:{0} " , generation);Console.WriteLine();try{new FileStream(@"F:\cavapy.avi", FileMode.Open);}catch  (Exception e) { }for  ( int  j  =   1 ; j  <   6 ; j ++ ){generation  =  GC.GetGeneration(obj);Console.WriteLine(j.ToString());Console.WriteLine( " TotalMemory:{0} " , GC.GetTotalMemory( false ));Console.WriteLine( " MaxGeneration:{0} " , GC.MaxGeneration);Console.WriteLine( " Value:{0},Key:{1} " , obj.Value, obj.Key.Length);Console.WriteLine( " Generation:{0} " , generation);Console.WriteLine();GC.Collect();GC.WaitForPendingFinalizers();}Console.ReadKey();  }}
}

 

2、析构函数(Finalize 方法)

析构函数(Finalize 方法)用来释放非托管资源,由GC来调用执行回收,来保证非托管资源可以被释放。Object.Finalize()方法是无法重载的,编译器是根据类的析构函数来自动生成Object.Finalize()方法的。对于包含非托管资源的类,可以将释放非托管资源的代码放在析构函数。

例如,

public class FinalizeClass
{~FinalizeClass(){//在这里,清理非托管资源}
}

 

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

3、Dispose

.NET Framework中非托管理资源的释放,除了可以使用析构函数(Finalize 方法),还可以通过实现IDisposable接口,代码执行完成后通过调用Dispose()方法来释放非托管资源。与析构函数的区别主要是,Dispose()方法需要程序员手动调用。

调用方式如下,

//方式1:显示接口调用
SomeType st1=new SomeType();
//执行操作
st1.Dispose();//方式2:using()语法,运行到using范围外自动执行Dispose方法
using (var st2 = new SomeType())
{//执行操作
}

 

http://www.hengruixuexiao.com/news/13994.html

相关文章:

  • 建设部网站公示东营网站建设哪家更好
  • 企业网站 html模板下载网络营销方案的范文
  • 西宁高端网站开发公司百度竞价排名事件分析
  • 做暧暧小视频网站百度科技有限公司
  • 网站制作公司有哪些证百度推广电话客服
  • 网站手机端怎么做深圳推广公司有哪些
  • 申请网站就是做网站吗百度统计流量研究院
  • ui设计和平面设计哪个难众志seo
  • as3 xml 网站模板 下载seo是什么品牌
  • wordpress做电商网站网站建设运营
  • 网站备案需要提供网站建设方案书制作网页多少钱
  • .net网站建设产品网络推广方式
  • wordpress搭建服务器seo排名软件
  • 日本做的视频网站有哪些问题临沂网站建设优化
  • 中山做网站服务好接广告推广
  • 汕头建站培训枣庄网络推广seo
  • 为什么大公司不用uniapp安卓优化大师手机版下载
  • 常见动态网站开发技术对比军事新闻今日最新消息
  • 中国做美国酒店的网站拉新平台
  • 沂源放心企业网站建设方案报价seo的宗旨是什么
  • 企业型网站怎么做ks免费刷粉网站推广马上刷
  • 网站主服务器所在地地址开发网站建设公司
  • web网站开发学院seo站长工具推广平台
  • 佛山市房产信息网宝鸡网站seo
  • 做网站要法人身份证吗学百度推广培训
  • 网站怎样做的有吸引力优化网址
  • 手机网站推广怎么做营销软件培训
  • 如何制作私人网站网址查询入口
  • 淮安建设局网站推广平台排行榜app
  • 无网站做网赚免费软文网站