代码改变世界

C# capacity property[翻译&&学习]

2011-09-07 20:35 by 一一九九, 423 阅读, 0 推荐, 收藏, 编辑
摘要:From:http://www.dotnetperls.com/capacity 虽然可以设置Collection的Capacity属性,你一定想知道为什么值得需要单独的设置Collection的Capacity属性把。这个选项用于调整分配的内存数量。这里我使用Dictinary和List来做个实验,测试一下他们的性能和影响。 测试结果: class c... 阅读全文

.net垃圾回收学习【NET Best Practice No: 1:- Detecting High Memory consuming functions in .NET code】【翻译&&学习】

2011-08-30 06:51 by 一一九九, 250 阅读, 0 推荐, 收藏, 编辑
摘要:From: http://www.c-sharpcorner.com/UploadFile/shivprasadk/452069230108152009163244PM/4520692301.aspx?ArticleID=50bdd822-23d0-4baa-ab0a-21314b94d9e5 .net代码性能降低的一个主要原因是内存消耗。很多开发人员在解决性能瓶颈的时候将精力集中在执行时间上,... 阅读全文

.net 垃圾回收学习[How To: Use CLR Profiler][翻译&&学习]【3】

2011-08-28 22:54 by 一一九九, 421 阅读, 0 推荐, 收藏, 编辑
摘要:http://msdn.microsoft.com/zh-cn/library/ms979205注意:内容可能已经过期了。注意:CLR Profiler最新版本:http://www.microsoft.com/download/en/details.aspx?id=16273Analyzing Your Application's Allocation Profile你的application profiler呈现了对象都是在那里分配的,对象的生命周期以及GC的行为。 在下面的部分,Application持有对象比需要的更长一些。这个部分采用ProfilerSample2示例。To 阅读全文

.net 垃圾回收学习[How To: Use CLR Profiler][翻译&&学习]【2】

2011-08-28 22:19 by 一一九九, 292 阅读, 0 推荐, 收藏, 编辑
摘要:http://msdn.microsoft.com/zh-cn/library/ms979205注意:内容可能已经过期了。注意:CLR Profiler最新版本:http://www.microsoft.com/download/en/details.aspx?id=16273Identifying Common Garbage Collection Issues可以使用CLR Profiler.exe来识别和隔离GC相关的内存问题,包括内存消耗相关的内容:过多的分配。 Excessive Allocations未知的分配。 Unknown Allocations内存泄漏。 memory le 阅读全文

.net 垃圾回收学习[How To: Use CLR Profiler][翻译&&学习]

2011-08-28 20:52 by 一一九九, 390 阅读, 0 推荐, 收藏, 编辑
摘要:http://msdn.microsoft.com/zh-cn/library/ms979205注意:内容可能已经过期了。Improving .NET Application Performance and ScalabilityJ.D. Meier, Srinath Vasireddy, Ashish Babbar, and Alex Mackman Microsoft CorporationMay 2004ContentsOverview Downloading CLR Profiler What You Must Know Profiling Applications Profiling 阅读全文

.net 垃圾回收学习[NET 2.0 Performance Guidelines - String Operations]【翻译&&学习】

2011-08-28 18:33 by 一一九九, 240 阅读, 0 推荐, 收藏, 编辑
摘要:From: http://www.guidanceshare.com/wiki/.NET_2.0_Performance_Guidelines_-_String_Operations目录:1 Avoid Inefficient String Concatenation2 Use + When the Number of Appends Is Known3 Use StringBuilder When the Number of Appends Is Unknown4 Treat StringBuilder as an Accumulator5 Use the Overloaded Compar 阅读全文

.net垃圾回收学习[NET 2.0 Performance Guidelines - Garbage Collection][翻译加学习]【2】

2011-08-28 16:13 by 一一九九, 146 阅读, 0 推荐, 收藏, 编辑
摘要:From:http://www.guidanceshare.com/wiki/.NET_2.0_Performance_Guidelines_-_Garbage_CollectionSet Unneeded Member variables to null before making long-running calls在开始一段运行时间较长的代码之前,你应该明确的设置不需要的对象变量为NULL,以便在运行时间较长的代码调用之前能够被收集。如下代码所示:class MyClass{ private string str1; private string str2; void DoSomeP.. 阅读全文

.net垃圾回收学习[NET 2.0 Performance Guidelines - Garbage Collection][翻译加学习]

2011-08-28 11:35 by 一一九九, 307 阅读, 0 推荐, 收藏, 编辑
摘要:From:http://www.guidanceshare.com/wiki/.NET_2.0_Performance_Guidelines_-_Garbage_Collection目录:Identify and analyze your application’s allocation profileAvoid Calling Gc.CoollectConsider Using Weak References with Cached DataPrevent the promotion of Short-Lived ObjectsSet Unneeded Member Variables to 阅读全文

.net垃圾回收学习【Back to basics: Why use garbage collection】【翻译&&学习】

2011-08-28 10:04 by 一一九九, 234 阅读, 0 推荐, 收藏, 编辑
摘要:From:http://blogs.msdn.com/b/abhinaba/archive/2009/01/20/back-to-basics-why-use-garbage-collection.aspxGC所做的事情就如同其名字“自动垃圾回收”一样。GC基本上主要负责两个基本的场景:移除垃圾、 避免悬挂指针。这两个是内部相关关联的的但是是不同的场景。Garbage Collect考虑一个典型的对象引用关系图(见下图)。 在对象图中,每个边都是一个Object,箭头指示对象的对象的引用。如图所示:A是一个引用B的Object,一个程序如果能够使用某个对象,那么这个对象需要在引用的链表中。引用 阅读全文

.net 垃圾回收学习【Memory leak via event handlers】【翻译&&学习】

2011-08-27 18:07 by 一一九九, 255 阅读, 0 推荐, 收藏, 编辑
摘要:From: http://blogs.msdn.com/b/abhinaba/archive/2009/05/05/memory-leak-via-event-handlers.aspx分享一下我们的客户最近比较感兴趣的内存溢出的问题。The short version问题的核心是他们有Event sinks和Sources。 Event sinks被正确的释放,然而,在释放的过程中他们忘记了从触发事件的source中移除event sink.所以,事实上,已经被释放掉的sinks仍然可以从event source被reachable。所以GC不会释放Event sinks并且会导致泄漏的对象 阅读全文

.net垃圾回收学习【Back to Basics: Memory leaks in managed systems】【翻译&&学习】

2011-08-27 17:24 by 一一九九, 206 阅读, 0 推荐, 收藏, 编辑
摘要:From: http://blogs.msdn.com/b/abhinaba/archive/2010/01/05/back-to-basics-memory-leaks-in-managed-systems.aspx有些人问他的Managed application为什么会内存一直在不停的增加,而且这很明显的是内存泄漏的标志,这些人都持有这个观点he is using .net and hence there should surely be no leaks。其他一些人也持有类似的观点。然而这个观点是不正确的,可以通过以下两篇文章了解GC的工作机制:http://blogs.msdn.co 阅读全文

.net 垃圾回收学习[Back To Basics: How does the GC find object references][翻译&&学习]

2011-08-27 16:58 by 一一九九, 236 阅读, 0 推荐, 收藏, 编辑
摘要:From:http://blogs.msdn.com/b/abhinaba/archive/2009/03/03/back-to-basics-how-does-the-gc-find-object-references.aspx 大多数的内存收集算法需要知道被一个给定的对象引用的所有的其他对象,以便能够正确的遍历对象层级树.所有的reference counting, making-sweep and even coping collector 需要了解对象的引用关系。考虑到我在mark-sweep gc中讲到的mark 算法。void Mark(Object *pObj) { if(!Ma 阅读全文

.net垃圾回收学习[Back to Bascis: Generational garbage collection][翻译&&学习]

2011-08-25 07:16 by 一一九九, 280 阅读, 0 推荐, 收藏, 编辑
摘要:From: http://blogs.msdn.com/b/abhinaba/archive/2009/03/02/back-to-basics-generational-garbage-collection.aspx 在mark-sweep garbage collection一文中提到mark-sweep garbage的算法的最大的缺点就是在整个heap需要标记和清除的时候引入了... 阅读全文

.net 垃圾回收学习【.net 框架程序设计】[CH19: 自动内存管理]

2011-08-24 20:25 by 一一九九, 269 阅读, 0 推荐, 收藏, 编辑
摘要:19.1 基本原理解析(一)访问一个资源所需要的几个步骤:为类型实例分配一定的空间初始化内存, 设置资源的初始化状态访问类型成员来使用资源。销毁资源状态,执行清理工作。释放内存。 由于垃圾收集器对内存中的类型表示何种资源一无所知,所以垃圾收集器对第四步并不清楚如何执行,为了使资源得到正确的清理,开发人员必须自己编写执行这部分工作的代码。大多数类型,比如Int32,Point,String,ArrayList 以及SerializationInfo,标识的资源并不需要特殊的清理操作。例如: 一个Point资源完全可以通过销毁对象内存中的X字段和Y字段来完成清理工作。另一方面,对于一个表示(或者说 阅读全文

.net垃圾回收学些【The Truth of garbage collection】【续】

2011-08-24 17:32 by 一一九九, 203 阅读, 0 推荐, 收藏, 编辑
摘要:From: http://java.sun.com/docs/books/performance/1st_edition/html/JPAppGC.fm.html#998394Reference Objects 在JAVA2之前,所有的引用都是强引用。 这意味着开发人员没有任何方式和GC进行交互,除了通过像System.gc等强制方法。 JAVA2引入了java.lang.ref Package。 图A-4显示了这个包中的类的层级结构。这个包定义了reference-object类,通过这些类可以和GC进行有限的交互。 Reference Object用来维护某个对象的引用,此时GC仍然能够回 阅读全文

.net 垃圾回收学习 The Truth About Garbage Collection [Java][翻译]

2011-08-23 23:17 by 一一九九, 260 阅读, 0 推荐, 收藏, 编辑
摘要:From:http://java.sun.com/docs/books/performance/1st_edition/html/JPAppGC.fm.html#998394 GC有可能是Java Platform上被最多用户误解的特性。GC的目的以及对外宣称的都是将应用程序开发人员从内存管理的职责上释放出来,然而,这个目的就没有轻易的达到,在另外一方面,有些开发人员经常做一些操作要求进行垃圾回收,做的事情反而比要求的更多一些。对GC有一个比较稳固的理解是编写鲁棒、高性能的JAVA Platform程序的必要条件。 这个附录提供了对垃圾回收机制的一个概览,这些能够帮助你很好的理解内存管理。这个 阅读全文

.net垃圾回收学习【C#中的stack和Hepa】【续2】

2011-08-21 22:35 by 一一九九, 363 阅读, 0 推荐, 收藏, 编辑
摘要:From http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory2B01142006125918PM/csharp_memory2B.aspx记录学习。Passing Reference Types. 传递引用类型的参数和之前通过引用传递至类型的参数有点类似。如下代码: public class MyInt{ public int MyValue;}当调用Go方法的时候,由于MyInt是一个引用类型,所以在heap创建public void Go(){ MyInt x = new MyInt();}当我们执行如下代... 阅读全文

.net垃圾回收学习[C#中的Stack和heap][续3]

2011-08-21 22:31 by 一一九九, 203 阅读, 0 推荐, 收藏, 编辑
摘要:From: http://www.c-sharpcorner.com/UploadFile/rmcochran/chsarp_memory401152006094206AM/chsarp_memory4.aspxIn this article we'll cover an issue that arises from having reference variables in the heap and how to fix it using ICloneable.A Copy is not A Copy 为了定义问题所在,我们将要观察在heap上有一个value type和 refer 阅读全文

.net垃圾回收学习【C#中的Stack和heap]【续1】

2011-08-21 10:53 by 一一九九, 284 阅读, 0 推荐, 收藏, 编辑
摘要:From:http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory2B01142006125918PM/csharp_memory2B.aspx学习加记录。 本部分主要讲Pointer基本概念。Parameters, the Big Picture 当我们调用一个方法的时候,会发生如下情况:为在Stack上执行的方法所需要的信息分配空间(called stack frame). 包括正在运行的函数的调用地址(calling address)。调用地址(call address)是一个指针,一般是一个GoTo的指令,起作用是当 阅读全文

.net 垃圾回收学习[C#中的stack和Heap]

2011-08-20 18:27 by 一一九九, 819 阅读, 0 推荐, 收藏, 编辑
摘要:From: http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM/csharp_memory.aspx翻译加学习。 虽然在.net framework下我们不需要主动的关心内存管理和垃圾回收,但是我们仍然需要了解内存管理和垃圾回收以便更好的优化我们的application. 当然,对内存管理如何工作有关基本的了解有助于我们理解我们写的程序中变量的行为。 .net framework使用stack和heap两种结构在内存中存储指令和数据。Stack vs Heap: what’s the d 阅读全文