自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 .NET框架自动内存管理(1)

.NET框架自动内存管理(1)  对于C/C++程序员,在内存管理方面慎之又慎一点也不过分,因为内存漏损(占用的内存未及时释放)和野指针(指向已释放的内存块)错误给应用程序稳定性带来的影响可能会是灾难性的,而你又很难预料这一错误何时发生以及错误的后果。到了.NET框架时代,C#程序员在内存管理方面的担忧可以一扫而去了。因为.NET框架的垃圾回收器自动管理着应用程序的内存分配和释放。垃圾回收器优化引

2005-11-15 15:41:00 1111

原创 .NET框架自动内存管理(2)

.NET框架自动内存管理(2)   2..NET垃圾回收原理   托管代码则不同,.NET框架为托管对象(Managed Object)提供了完善的内存回收机制。当托管对象不可访问(unreachable)之后,即可被垃圾回收器回收。托管对象何时被认为是“不可访问的”呢?运行库通过一套复杂的机制来跟踪对象被引用的情况,当应用程序不再有指向对象的引用时,对象就是不可访问的。在以下情况下,对象的引用不

2005-11-15 15:39:00 986

原创 .NET框架自动内存管理(3)

.NET框架自动内存管理(3) 3.Finalize方法和对象的析构函数 System.Object对象提供Finalize方法,垃圾回收器在回收对象的内存之前,自动调用Finalize方法,然后回收对象占用的内存。默认情况下,Finalize方法不执行任何操作,如果需要让垃圾回收器在回收对象的内存之前执行对非托管资源等的清理操作,则派生类必须重写Finalize方法。垃圾回收器使用“终止队列(F

2005-11-15 15:33:00 981 1

原创 .NET框架自动内存管理(4)

.NET框架自动内存管理(4) 4.GC类与垃圾回收控制 运行库提供GC类使应用程序能够控制垃圾回收器的行为。前面已经述及,垃圾回收周期是不确定的,由垃圾回收器引擎自动计算最佳的垃圾回收时间。在一个需要大量消耗内存的应用程序中,如果在某个确定的时间点上已经明确占用的内存不再需要,及时释放这些内存对提高应用程序的性能有显著的影响,这时就可以强制垃圾回收器执行回收周期。GC.Collect方法强制垃圾

2005-11-15 15:31:00 945

原创 .NET框架自动内存管理(5)

.NET框架自动内存管理(5)   5.清理非托管资源的Dispose模式   当托管对象封装了非托管资源时,为保证垃圾回收器能回收非托管资源,必须重写Finalize方法,在Finalize方法中封装能够清理非托管资源的代码。有时希望消耗大量内存的非托管资源能够在垃圾回收周期到来之前被回收以提高应用程序的性能,这时就需要手动清理非托管资源。所幸的是,.NET框架类库(FCL)提供了实现手动清理非

2005-11-15 15:21:00 852

原创 .NET框架自动内存管理(6)

.NET框架自动内存管理(6)    在上述代码示例中,DisposeBase是可以在应用程序中直接使用的抽象基类,它提供了dispose模式清理非托管资源的基本框架。基类DisposeBase实现IDisposable接口,提供由应用程序调用的公共Dispose()方法,注意该方法是不能由派生类重写的非虚方法,以简化派生类的dispose模式设计。该方法通过调用受保护的virtual Dispo

2005-11-15 15:15:00 841

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除