最近一位朋友的ASP.NET程序怀疑有内存泄露问题。几个简单的页面,起来运行几分钟后,虚拟内存就到600多MB。从性能监视上看,private bytes只有200多MB。这样的问题从经验上来说,十有八九都是内存碎片了。ASP.NET程序发生内存碎片的原因比较多,我常见的有:1. Web.config中的debug=true,导致batch compilation=false,使得每一个ASPX页面都生成一个临时assembly。当页面比较多的时候,大量的assembly导致内存泄露。2. 程序中误用了XmlSerializer。频繁的XML序列化导致大量的动态assembly3. 程序中有大量的blocking IO操作,而且IO buffer没有及时释放。比如程序中有大量的Web Service调用,但是对方web service返回比较慢,使得调用程序中用来接收web service结果的小块buffer大量堆积,导致内存泄露阅读全文>
发表于 @ 2007年10月26日 11:26:00|评论(loading...)|编辑
以前就发现LH的Exception Handling有变化。当程序崩溃后,程序会被系统挂在发生问题的汇编代码上,这样直接用调试器上去就可以看了。当时一直想研究下具体怎么实现的。另外在具体的异常派发也没有详细地用调试器走一遍。今天有时间,所以就用调试器跑了一遍一个简单的AV。阅读全文>
发表于 @ 2007年10月16日 00:14:00|评论(loading...)|编辑
在Windows高效排错中提到了调试重定向。书中没有详细介绍。今天恰好有机会在虚拟机上从头开始配置了一下,所以把详细的内容记录在这里,算是补充。另外我也是被CSDN的编辑逼到绝路了,总算逼出一篇新的文章。我理解新书需要在blog上多多宣传和介绍,才能让潜在的读者在购买前有具体的了解,以便让适合的读者找到书,让不适合的读者不要浪费钱。但是我的blog都是在MSN Space上,我也实在不想把以前所有的blog都一个一个搬过来。原因在于我在MSN Space上的blog,虽然技术上是证据确凿,真实有效,但是语言上是很随便的,里面的好多语言放在技术网站上怕引人误会。如果读者需要了解书中的大体内容,可以参考下这些资料:阅读全文>
发表于 @ 2007年10月11日 21:35:00|评论(loading...)|编辑