用于检查内存碎片的工具



我最近读到了关于内存碎片的主题:如何解决内存碎片和什么是内存碎片?

我想在这些文章中看到一些内存分配图,例如作者 http://pavlovdotnet.wordpress.com/2007/11/10/memory-fragmentation/

您能否推荐一些工具来获取这样的内存分配图,这样我就可以查看内存是否碎片以及可用的最大可用空间是多少。

我在Windows上,所以我更喜欢在这个系统上工作的工具。

这是一个可视化 GC 内存和堆使用情况的工具,还提供了源代码。另一个类似的应用程序也链接到那里的评论中。

如果需要能够分析.NET解决方案的内存使用情况,可以查看ANTS内存探查器,它可以与Visual Studio中的项目一起运行,并密切关注进程和对象如何使用内存。

这个问题有间接的解决方案。我已经开发服务器应用程序几年了。最初,我们按需进行分配,结果在运行几周后,服务器的性能下降。作为解决方法,我们遵循了这种方法 -

假设您有用户定义的类 X,Y,Z,..,您需要在运行时从堆中分配这些类。在启动时分配 n 个对象 X。将所有这些对象放在可用池列表中。按需 ,获取 x 的每个对象并将其提供给您的应用程序。使用时,将其放入繁忙的池列表中。当应用程序想要发布它时,请将其放回免费池列表。遵循这个 Y. Z 等的起点。

由于您在启动时分配所有需要的对象,并且在程序退出之前永远不会释放回操作系统内存管理器,因此您不会面临内存碎片导致的性能下降。

最新更新