03 2014 档案
.Net内存泄露原因及解决办法
摘要:.Net内存泄露原因及解决办法1. 什么是.Net内存泄露(1).NET 应用程序中的内存您大概已经知道,.NET 应用程序中要使用多种类型的内存,包括:堆栈、非托管堆和托管堆。这里我们需要简单回顾一下。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。在运行库的控制下执行的代码称作托管代码。相反,在运行库之外运行的代码称作非托管代码。COM 组件、ActiveX 接口和 Win32 API 函数都是非托管代码的示例。COM/COM++组件,ActiveX控件,API函数,指针运算,自制的资源文件...这些的非托管的,其它就是托管的.在CLR上编译运行的代码就是托管代码 阅读全文
posted @ 2014-03-17 16:45 higirle 阅读(32115) 评论(2) 推荐(2)
.NET 强引用和弱引用
摘要:一:什么是弱引用 了解弱引用之前,先了解一下什么是强引用 例如 : Object obj=new Object(); 就是一个强引用,内存分配一份空间给用以存储Object数据,这块内存有一个首地址,也就是obj所保存的数据,内存分配的空间中不仅仅保存着Object对象信息,还保存着自己(Object本身)被引用的次数。 当一个对象被强引用的形式创建的时候,本身被引用的次数已经为1. 接着Object o=obj; 这句代码执行之后,obj指向的Object的存储空间已经被引用了2次,所以Object保存的被引用数值为2. 总结:强引用最终导致的结果就是被引用的对象的被引用次数+1; ... 阅读全文
posted @ 2014-03-11 15:46 higirle 阅读(2602) 评论(0) 推荐(1)
C# 多线程同步和线程通信
摘要:多线程通信1. 当线程之间有先后的依赖关系时,属于线程之间的通信问题。也就是后一个线程要等待别的一个或多个线程全部完成,才能开始下一步的工作。可以使用:WaitHandle Class WaitHandle类作为基类来使用的,它允许多个等待操作。这个类封装了win32的同步处理方法。WaitHandle对象通知其他的线程它需要对资源排他性的访问,其他的线程必须等待,直到WaitHandle不再使用资源和等待句柄没有被使用。下面是从它继承来的几个类: AutoResetEvent:Notifies a waiting thread that an event has occurred. ... 阅读全文
posted @ 2014-03-11 15:13 higirle 阅读(3270) 评论(0) 推荐(0)