首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这句话是什么意思?

这句话是什么意思?
EN

Stack Overflow用户
提问于 2011-04-01 04:05:32
回答 2查看 123关注 0票数 4

在阅读改进.NET应用程序性能和可伸缩性时,我在“提高托管代码性能/垃圾收集器指南:

Avoid preallocating and chunking memory.

但是这本书从来没有解释为什么预分配是不好的,或者从GC优化的角度来看,分块真正意味着什么。

有没有人能解释一下这个问题,解释一下为什么这两个不好,以及在.net中使用GC的真正意义是什么?

http://www.microsoft.com/downloads/en/details.aspx?FamilyId=8A2E454D-F30E-4E72-B531-75384A0F1C47&displaylang=en

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-01 04:06:58

预分配内存是一种伸缩性不好的技术。分块可能会在大对象堆中推送分配。这两种方法都会让你不必要地使用内存。相信垃圾收集器,在你需要的时候进行分配。

票数 7
EN

Stack Overflow用户

发布于 2011-04-01 04:11:02

关于问题是什么,它确实有一些东西要说。第198页:

C++程序员通常分配一个很大的内存块(使用malloc),然后一次使用多个内存块,以节省对malloc的多次调用。对于托管代码,这是不可取的,原因如下:

托管内存的

  • 分配是一个快速操作,垃圾收集器已针对极快的分配进行了优化。在非托管代码中预分配内存的主要原因是为了加快分配过程。这不是托管代码的问题。
  • 如果预分配内存,则会导致超过所需的分配;这可能会触发不必要的垃圾回收。
  • 垃圾回收器无法回收您手动回收的内存。
  • 预分配内存老化,最终释放时回收成本更高。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5505680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档