【发布时间】:2011-09-27 23:39:22
【问题描述】:
我正在处理的应用程序在启动后立即占用 338MB 私有字节和 780MB 虚拟字节。 我试图了解是什么占用了所有这些记忆。希望在了解之后,我将能够减小它的大小。 这是一个 32 位 C# 应用程序,上面的数字是在 Windows7 64 位上运行时获取的。
使用 windbg 打开转储显示堆大小为 47MB。 应用程序加载的外部库文件总大小为 60MB。
一个空的 c# 应用程序只占用 10MB,那么是什么导致我的应用程序达到 338MB 私有字节? 而windows7为什么要分配780MB的虚拟内存?
任何指示都会有所帮助。
【问题讨论】:
-
1.使用memory profiler 找出您的应用程序在哪里分配了大量内存。 2.看看this question的答案;也许它已经回答了您的部分问题。
-
如果是应用程序分配内存,我不应该在堆中看到它吗? heep 只有 47MB。
-
这是造成实际问题,还是出于好奇?
-
@John Saunders 这引起了实际问题,因为我写的尺寸是启动程序后的基本尺寸,但由于这是一个高清视频流和渲染相关的应用程序,内存增长很快。此外,这是一个 32 位应用程序,并且很快就达到了 ~1.5GB 的虚拟内存限制。
-
@galbarm:当达到内存限制时,究竟会发生什么?
标签: c# .net windows memory clr