回答
使用内存分析器 - 将其附加到可疑进程并运行可疑操作。
您可以在this问题的答案中找到一些推荐的分析器。
的Visual Studio探查/性能工具允许你跟踪Object Allocation and Lifetime。
不幸的是,这只适用于价格较高的VS层次结构版本。
首先,安装最新版本的Microsoft调试工具。它是一个先决条件。
要分析内存消耗,我建议您下载&使用.Net Memory Profiler。它真的简化了所有的过程。
MemProfiler允许从托管应用程序,windows服务,asp.net应用程序和内存转储中分析托管内存利用率。
要在DEV机器上找到进程泄漏,请运行MemProfiler并简单地附加到所需的进程。分析完成后,拍摄一张快照,MemProfiler会告诉您加载了哪些实例以及多少实例,这样您就可以知道分配内存的方式。在不同时刻至少拍摄2张记忆快照,并比较它们以查看“增量实例”。 (如果delta> 0,则创建N个新实例,否则,它们被破坏)
何时收集内存转储?
- 例如,在您的应用程序成功响应几个请求后,您可以在加载完所有“必需的东西”之后取第一个。
- 您可能会在进行第二次快照之前对应用程序进行负载测试,因为如果应用程序具有lekead A LOT,那么它更容易找到位置。
- 您还可以继续加载测试应用程序并拍摄第3张,第4张快照以防万一。
收集有关Web应用程序内存转储在生产环境:
在服务器上安装调试工具你是不是必需的。您可以将其安装在开发人员电脑上,然后将该文件夹复制到生产环境中。例如:C:\ Program Files文件(x86)的\ Windows调试工具(x86)的
要确定Asp.Net W3WP使用此命令(可与W7和Server 2008,didnt试图用2003年):
%windir%\system32\inetsrv\appcmd list wp
要生成转储,执行:
AdPlus -hang -p <process id> -o <outputDir>
其他提示:
- 一般来说你的应用程序会出现泄漏的字符串,并在我分析的所有案例都是错误的。在我的情况下,我使用了Asp.NET + WCF + IdentityModel,并且他们使用了很多字符串。
- 如果你有兴趣,做了“.NET内存分析器教程”在http://memprofiler.com/tutorials/,并按照苔丝Ferrandez博客http://blogs.msdn.com/tess/
如果你认为可能有内存泄漏的地方,但你不知道在哪里能它是,start by watching memory usage per process with Task Manager或进程资源管理器,寻找一个进程总是吃越来越多的RAM:
使用AdPlus生成转储,避免任务管理器,因为任务管理器是一个32位进程可能转储64位一。 MemProfiler在这种情况下会感到困惑。
分析内存中的对象时,会在堆上看到ExecutionEngineException,StackOverflowException和OutOfMemoryException。不要惊慌。这并不意味着您的应用程序正在提出这种例外情况,they are always pre-allocated just in case:
- 1. 在C++中识别内存泄漏
- 2. MPMediaickerController由泄漏仪识别的内存泄漏
- 3. 如何识别Android中的内存泄漏?
- 4. 识别python中的内存泄漏 - 内存分析器
- 5. C中的内存泄漏?
- 6. 如何使用XCode 4中的泄漏识别泄漏对象?
- 7. C#内存泄漏?
- 8. 内存泄漏C++
- 9. 内存泄漏C#
- 10. C#内存泄漏?
- 11. 内存泄漏C
- 12. 内存泄漏检查程序如Valgrind如何识别免费
- 13. C#WinForm的内存泄漏
- 14. angularjs 1.5:如何识别什么是泄漏和修复泄漏?
- 15. C++内存泄漏问题
- 16. C#Picturebox内存泄漏
- 17. 客观C内存泄漏
- 18. C++发现内存泄漏
- 19. objective-c内存泄漏?
- 20. MySQL C API内存泄漏?
- 21. C内存泄漏问题
- 22. objective-c内存泄漏+ NSMutableDictionary
- 23. c#内存泄漏分析
- 24. 目标C,内存泄漏?
- 25. 内存泄漏C免费()
- 26. C++内存泄漏或不
- 27. 客观c内存泄漏
- 28. C++ win32 SysLink内存泄漏
- 29. Objective C内存泄漏
- 30. Objective-C内存泄漏
您如何在托管GC环境中发生内存泄漏? – 2010-11-29 17:57:10