【问题标题】:Tools for checking memory fragmentation [closed]检查内存碎片的工具[关闭]
【发布时间】:2012-06-05 19:06:59
【问题描述】:

我最近阅读了有关内存碎片的主题: How to solve Memory FragmentationWhat is memory fragmentation?

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

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

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

【问题讨论】:

    标签: memory memory-management profiling


    【解决方案1】:

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

    假设您有用户定义的类 X,Y,Z, .. 您需要在运行时从堆中分配它们。在启动时分配 n 个对象 X。将所有这些对象放入空闲池列表中。根据需要,获取 x 的每个对象并将其提供给您的应用程序。使用时,将其放入忙池列表中。 当应用程序要释放它时,将其放回空闲池列表。遵循 Y.Z 等的这个策略。

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

    【讨论】:

    【解决方案2】:

    Here 是一个可视化 GC 内存和堆使用的工具,并提供了源代码。那里的 cmets 中也链接了另一个类似的应用程序。

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

    【讨论】:

      猜你喜欢
      • 2010-09-11
      • 2011-06-06
      • 2019-01-31
      • 2013-08-14
      • 1970-01-01
      • 2010-11-15
      • 2021-07-05
      • 1970-01-01
      • 2010-10-26
      相关资源
      最近更新 更多