了解.NET应用程序内存大小

gal*_*arm 6 .net c# memory windows clr

我正在处理的应用程序在启动后立即占用338MB私有字节和780MB虚拟字节.我试图理解是什么需要所有这些记忆.希望在了解我能够减少它的大小之后.这是一个32位C#应用程序,上面的数字是在Windows7 64位运行时拍摄的.

使用windbg打开转储显示堆大小为47MB.应用程序加载的外部库文件总大小为60MB.

一个空的c#应用程序只需要10MB,那么什么可能导致我的应用程序达到338MB私有字节?为什么windows7会分配780MB虚拟内存?

任何指示都会有帮助.

gim*_*mel 5

您可以在technet站点上使用VMMap,一个进程虚拟和物理内存分析实用程序Windows Sysinternals.

VMMap显示了进程提交的虚拟内存类型的细分以及操作系统为这些类型分配的物理内存(工作集)的数量.除了内存使用的图形表示外,VMMap还显示摘要信息和详细的进程内存映射.强大的过滤和刷新功能使您可以识别进程内存使用的来源和应用程序功能的内存成本.

除了用于分析实时进程的灵活视图外,VMMap还支持以多种形式导出数据,包括保留所有信息的本机格式,以便您可以重新加载.还包括启用脚本方案的命令行选项.

VMMap是希望了解和优化其应用程序内存资源使用情况的开发人员的理想工具.