2011年12月26日
摘要: 什么情况下我们需要 ,按引用封送或者按值封送对象?首先,先简单说下AppDomain(应用程序域概念):个人理解:大家都知道Window把每个正在运行的程序以进程隔离了,当一个程序崩溃时,别的正在运行的程序没有任何影响。好现在转到.NET平台上来,现在有一软件是.NET开发的.当这个软件启动时,底层开启一个进程,同时加载相应的CLR环境. 默认情况下CLR只会加载一个默认应用程序域.我们可以让他同时加载几个应用程序域,此时这个进程就有好几个应用程序域.应用程序域最主要的功能就是(类似于进程的作用只不过他把作用范围缩小了).他能保障在一个进程内同时加载应用程序域其中一个崩溃时。其他应用程序域中运 阅读全文
posted @ 2011-12-26 16:14 Skolley 阅读(458) 评论(2) 推荐(1)
  2011年12月24日
摘要: 首先,先说一点当使用非托管资源时,占用的托管内存很小,非托管资源占用了大量内存。如果一个类要包装可能很大的本地资源,就应该提示垃圾回收器实际需要消耗多少内存。垃圾回收器内部会监视内存压力,压力变大时,就强制执行垃圾回收。命名空间System.Runtime.InteropServices 提供了 HandleCollection类此类作用:因为当CLR使用非托管资源时产生的托管对象内存非常小 应为GC回收只会根据托管对象的内存达到一定限度才会执行垃圾回收。比如:你调用有10个非托管资源,在进程中每个非托管资源占用1M非托管内存,产生1K托管内存, GC回收第0代的阀值是256K,写程序的兄弟操 阅读全文
posted @ 2011-12-24 19:10 Skolley 阅读(563) 评论(0) 推荐(0)
  2011年12月17日
摘要: 先贴下Nullable<T>简单实现: 1 [Serializable] 2 public struct Nulllable<T> where T : struct 3 { 4 private Boolean hasValue = false; 5 internal T value = default(T); 6 public void Nullable(T value) 7 { 8 this.value = value; 9 this.hasValue = true;10 }11 public Boolean HashValue12 {13 g... 阅读全文
posted @ 2011-12-17 21:26 Skolley 阅读(985) 评论(2) 推荐(0)