当前位置:  开发笔记 > 编程语言 > 正文

c #windows app - 分析峰值内存使用情况并识别趋势

如何解决《c#windowsapp-分析峰值内存使用情况并识别趋势》经验,为你挑选了1个好方法。

我有一个长期运行的控制台应用程序,运行数百万次迭代.我希望在迭代次数增加时,如果内存使用量逐渐增加,我会进行基准测试.

最好的方法是什么?

我想我真的只需要关注运行期间的峰值内存使用情况吗?我基本上需要弄清楚在给定服务器上的内存的情况下,我可以在此硬件上运行的最大迭代次数.

我将设置批量运行并在不同的交互大小上记录结果,然后绘制结果图以确定内存使用趋势,然后可以针对任何给定的硬件进行外推.

寻找关于实现这个的最佳方法的建议,使用什么.net方法,类或者我应该使用外部工具.这篇文章http://www.itwriting.com/dotnetmem.php建议我应该通过代码来描述我自己的应用程序,以分析.net运行时在盒子上的其他应用程序中使用的共享内存.

谢谢



1> adrianbanks..:

做这件事有很多种方法:

Perfmon UI

您可以使用Windows附带的Performance Montior控制面板小程序(在"管理工具"中)来监视您的应用程序.看看.Net CLR Memory类别及其中的计数器.您还可以将监控限制为仅适用于您的流程.这可能是最简单的,因为它不需要更改代码.

Perfmon API

您可以以编程方式使用.Net中的性能计数器.为此,您需要使用PerformanceCounter类.这只是上述UI提供的相同底层信息的API.

Memory Profiler

您可以使用内存分析器在应用程序运行时对其进行分析.我成功使用的两个是来自RedGate 的ANTS Memory Profiler和来自SciTech 的.Net Memory Profiler.同样,这不需要更改代码,但可能会花钱(尽管有免费试用版).还有CLR Profiler(这里有一个howto ).

滚动你自己

您可以从Process类获取一些有限的内存信息.使用Process.GetCurrentProcess()获取当前进程,然后查看它的属性,特别是与内存相关的属性(MinWorkingSet,MaxWorkingSet,PagedMemorySize64,PeakPagedMemorySize64,PeakVirtualMemorySize64,PeakWorkingSet64,PrivateMemorySize64,VirtualMemorySize64,WorkingSet64).这可能是最糟糕的解决方案,因为您必须自己完成所有事情,包括数据收集和报告.


如果您想要做的就是验证您的应用程序在迭代次数增加时不会线性增加其内存使用量,我建议您使用Windows中的性能监视器UI进行监视.它会以最小的努力向您展示您需要的东西.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有