检查内存碎片化的工具

6
2个回答

5

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

如果您需要为.NET解决方案配置内存使用情况的概要文件,可以查看ANTS Memory Profiler,它可以与Visual Studio中的项目一起运行,并监视进程和对象如何使用内存。


2

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

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

由于您在启动时分配了所有所需的对象,并且直到程序退出之前不会将它们释放回操作系统内存管理器,因此您不会面临由内存碎片化引起的性能下降。


虽然你的解决方法是可行的,但这里有一个替代方案:https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa366750(v=vs.85).aspx - user497849

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接