- 博客(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关注的人