何时解决托管堆碎片问题

M. *_*ley 2 .net caching heap-fragmentation

我正在阅读Josh Smith 撰写的博客文章,他使用缓存机制来"减少托管堆碎片".他的缓存减少了创建的短期对象的数量,但代价是执行速度稍慢.

在像C#这样的托管语言中管理堆碎片有多少问题?你如何诊断它是否是一个问题?在什么情况下你通常需要解决它?

Hen*_*man 7

什么时候

不太快.拥有短寿命物体通常非常便宜.为了使缓存有利可图,必须有(非常)许多候选人,他们应该活得足够长,以便下一代.

你如何诊断它是否是一个问题?

使用Profiler.我不太确定文章的作者那样做了.

在像C#这样的托管语言中管理堆碎片有多少问题?

据我所知,这种情况很少见..NET有一个压缩的垃圾收集器,可以防止大多数形式的碎片.有时候大对象堆存在问题.


编辑:

当你浏览文章下面的评论时,你会发现有人测量它并发现缓存比每次创建新的eventar慢很多.

结论:在开始优化之前进行测量.这不是一个好主意/例子.