Managed空间

彭刚的blog
随笔 - 26, 评论 - 153, 引用 - 81

导航

标签

每月存档

最新留言

广告

Design Guidelines and Generics

 

下面是公开的.Net Design Guidelines:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconnetframeworkdesignguidelines.asp

包括设计API应该遵守的一些原则以及一些写Managed程序时应该避免的错误。

Microsoft还提供了检查你的API设计和代码中违反GuideLines的工具:

http://www.gotdotnet.com/team/fxcop/

Brad Abrams会不时在他的Blog中Post关于Guidelines的更新

http://blogs.msdn.com/brada/

 

下面是关于GenericsGuidelines。可以当作关于Generics的教材:

http://blogs.msdn.com/kcwalina

如果对Generics内核有兴趣,不妨读读关于CLR Generics实现的论文:

http://research.microsoft.com/projects/clrgen/generics.pdf

 

 

 

 

posted on 2004-03-19 11:52:00 by gangp  评论(2) 阅读(1747)

查看文件使用情况的工具

今天干活时突然不能运行一个程序了。错误信息是不能删除一个临时文件。在Kill了所有可能访问这个文件的程序后,我还是得到这个讨厌的错误信息。

我刚好知道一个工具可以帮我:

http://www.sysinternals.com/ntw2k/freeware/handle.shtml

下载完这个程序后,发现Program Manager 是罪魁祸首。只好Log Off Log In了。

网页上有关于该工具的使用说明。这个网站上还有一些很棒的工具:

比如FileMon(文件监视器) RegMon(Registry监视器)

 

这些工具对调试程序也很有用。

顺便说一句,作者是Mark RussinovichInside Windows 2000的作者。牛人之一。

 

posted on 2004-03-18 11:23:00 by gangp  评论(7) 阅读(3316)

强烈推荐Christopher Brumme的Blog

Christopher Brumme是CLR的Architect。他是为数不多的几个对CLR了如指掌的人。
个人认为他的Blog属于必读:
http://blogs.msdn.com/cbrumme/

posted on 2004-03-17 14:48:00 by gangp  评论(5) 阅读(1514)

More on Working Set

看来我的Post起到了抛砖引玉的作用。知秋一叶给出了一个很完整的答案。另外也说明开心需要加快“警告”潜水员的频率眨眼笑脸

 

我再补充几点:

(1)在Vadump的输出中你会见到一系列的模块。如果你想知道为什么该模块会被载入。Windbg可以帮助你。具体步骤如下:

l         Windbg <application executable name>

l         输入命令 “sxe –c “kb” ld:<module name>”. 模块名是第五列中的名字。

l         输入命令”g”.

l         在指定的模块被装载时,Windbg会中断程序的执行并打印调用堆栈。

 

(2)细心的人可能已经注意到对于托管代码模块,进程中会有两个备份:

       40         2        38         0 mscorlib.dll

      124        66        58         0 mscorlib.dll

其中的一个是IL Assembly,另一个是预先编译好的Native代码。预编译的Native代码是有NGen工具生成的。关于NgenCLR组的PUM Jason Zander写了一篇不错的文章:

http://blogs.gotdotnet.com/jasonz/PermaLink.aspx/159ab473-b82a-44c0-a2b2-3ee5429a3d3b

这片文章也较详细的说明了内存共享的问题。

 

他还写了一篇关于Windbg的文章(不是很完整):

http://blogs.gotdotnet.com/jasonz/PermaLink.aspx/ca4a6a32-978a-4682-8048-4fcfffaff770

不过里面有一些Link很有用:

http://msdn.microsoft.com/msdnmag/issues/03/06/Bugslayer/

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/DBGrm.asp

 

(3)如果你在写带GUI的应用程序,不妨在你测试程序中加入一个检查Working SetCase:在起动程序后使用Vadump来得到Working Set并和你的Baseline文件进行比较。如果Working SetDelta超过一定的数量,那么你的新Code中有些值得注意的问题。

 

 

 

posted on 2004-03-17 11:02:00 by gangp  评论(3) 阅读(1487)

如何查看内存使用情况---使用Vadump

开心就好问了我一个极有挑战性的问题(压力好大:)):
为什么一个简单的托管程序会使用如此多的内存空间。
对这个问题,我现在并没有一个完整的答案。

不过我想向大家介绍一个内存查看工具:vadump。
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/vadump-o.asp

Vadump使用起来非常简单:
vadump -p <process id> -s -o

Vadump会显示各种内存的使用量和各模块的详细信息。以后我会解释各个栏目的意思。
你可以使用tlist来得到一个进程的ID。从我上次post的连接
http://www.microsoft.com/whdc/ddk/debugging/default.mspx
下载调试工具包。 里面就包括Tlist。
我最常用的命令行是: Tlist -t

posted on 2004-03-16 16:09:00 by gangp  评论(30) 阅读(39303)

自我介绍

 第一次post,还是先自我介绍一下吧。
我叫彭刚,在微软CLR组做程序员。创建这个blog的目的主要是为了和大家一起探讨和学习CLR的核心技术。
CLR是一个庞大的系统。对于CLR的很多方面我也是一知半解。我负责的领域有基本数据类型和数据结构以及CodeDom等属于.Net框架的类。

以后我会不定期的贴一些关于如下方面的文章:
(1)设计指南(design guidelines)。不知道到有没有人有兴趣和我一起翻译英文版的设计指南?
(2)如何编写高质量,高效率的托管代码。
(3)调试CLR的技巧,主要是如何使用WINDBG(一个免费的调试器)来调试复杂的问题。
 http://www.microsoft.com/whdc/ddk/debugging/default.mspx
(4)Generics。
大家如果有特别感兴趣的方面或特别希望在基本类库(mscorlib.dll和system.dll)中见到的功能,不妨给我留个言。

 

 

posted on 2004-03-16 14:28:00 by gangp  评论(40) 阅读(17706)

Powered by: Joycode.MVC引擎 0.5.2.0