Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 了解.NET应用程序内存大小_C#_.net_Windows_Memory_Clr - Fatal编程技术网

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

C# 了解.NET应用程序内存大小,c#,.net,windows,memory,clr,C#,.net,Windows,Memory,Clr,我正在处理的应用程序在启动后立即占用338MB的私有字节和780MB的虚拟字节。 我在试着理解是什么带走了这些记忆。希望在理解了这一点后,我能够缩小它的尺寸。 这是一个32位C#应用程序,上面的数字是在Windows7 64位运行时获取的 使用windbg打开转储时,堆大小为47MB。 应用程序正在加载的外部库文件的总大小为60MB 一个空的c#应用程序只需要10MB,那么是什么导致我的应用程序达到338MB的专用字节呢? 为什么windows7分配780MB虚拟内存 任何指导都会有所帮助。您可

我正在处理的应用程序在启动后立即占用338MB的私有字节和780MB的虚拟字节。 我在试着理解是什么带走了这些记忆。希望在理解了这一点后,我能够缩小它的尺寸。 这是一个32位C#应用程序,上面的数字是在Windows7 64位运行时获取的

使用windbg打开转储时,堆大小为47MB。 应用程序正在加载的外部库文件的总大小为60MB

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

任何指导都会有所帮助。

您可以利用进程虚拟和物理内存分析实用程序 来自technet网站

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

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

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


1.使用查找应用程序分配大量内存的位置。2.看看你的答案;也许它已经回答了你的部分问题。如果是应用程序分配内存,我不应该在堆中看到它吗?heep只有47MB。这是一个实际问题,还是一个好奇的问题?@John Saunders这是一个实际问题,因为我写的大小是启动程序后的基本大小,但由于这是一个高清视频流和渲染相关的应用程序,内存增长非常快。再加上这是一个32位的应用程序,~1.5GB的虚拟内存限制太快了。@galbarm:那么,当达到内存限制时,会发生什么呢?谢谢。这确实是我们现在要走的方向。我们注意到的第一件事是引用的程序集被加载了两次。这是一个已知问题,已在.net4中修复(请参见此处:)。应用修补程序后,虚拟内存大小减少了50MB,这是一个良好的开端。