当读取提高.NET应用程序性能和可伸缩性我已经碰到了提高托管代码的性能/垃圾收集Guidlines这下”:这个说法是什么意思?
Avoid preallocating and chunking memory.
但该书从未进入解释,为什么预分配是坏或者什么分块的真正含义在GC优化的光。
someobody可以阐明这个问题更多的光线,为什么2是不好的,他们到底在使用GC与.NET的术语的意思给我解释一下?
当读取提高.NET应用程序性能和可伸缩性我已经碰到了提高托管代码的性能/垃圾收集Guidlines这下”:这个说法是什么意思?
Avoid preallocating and chunking memory.
但该书从未进入解释,为什么预分配是坏或者什么分块的真正含义在GC优化的光。
someobody可以阐明这个问题更多的光线,为什么2是不好的,他们到底在使用GC与.NET的术语的意思给我解释一下?
预分配内存是一种技术,不能很好地扩展。分块可能推动大对象堆中的分配。无论是会不必要地使用内存。信任垃圾收集器,在需要时进行分配。
它有几件事情要说什么问题。页面198:
C++程序员经常一次分配的存储器(用malloc)大的块,然后使用 块,将其保存到malloc的多个呼叫。这是不可取的 托管代码有以下几个原因:
- 分配管理内存的是一个快速的操作和垃圾收集器 了极快的分配优化。在非托管代码中预分配 内存的主要原因是加速分配过程。对于托管代码,这不是一个 问题。
- 如果您预先分配内存,则会导致分配比所需更多;这可以触发不必要的垃圾回收。
- 垃圾回收器无法回收您手动回收的内存。
- 预分配的内存时间和成本更多以在最终发布时进行回收。
@Hans,代码片段好吗? – dexter 2011-03-31 20:07:29
什么?关键是你*不*使用这种类型的代码。 – 2011-03-31 20:08:37
究竟......什么样的代码?我想我不知道使用GC的分配是什么...... – dexter 2011-03-31 20:09:22