我在C#中编写了一个小的WinForm应用程序。制作的EXE 74 Kb 并且所有资源和所有大小 179 Kb 。但是当我运行它时,根据任务管理器在内存中需要 9.1 MB 。
所以我的问题是:
答案 0 :(得分:3)
首先,使用任务管理器确定内存使用情况充满了危险。阅读this article以便更清楚地了解它。
例如:
// Will take up a lot of memory!
var x = new byte[int.MaxValue];
所有这一切,9.1Mb实际上并不是很多(在使用2Gb RAM的机器上少于0.5%的内存),更重要的是,实际上你的应用程序使用9.1Mb是否重要RAM,还是你在浪费时间调查?请记住,你的时间很宝贵。您的最终用户是否会把时间花在别的东西上? =)
答案 1 :(得分:2)
可执行文件和内存使用的大小是两个完全不同的概念。例如,这个简单的程序:
class Program
{
static void Main()
{
var b = new byte[int.MaxValue];
}
}
只有4KB,但它使用了计算机上的所有可用内存并崩溃。这是为了向您展示您可以拥有一个非常简单的应用程序,但根据它的作用,它可能会占用大量内存。那么你的应用程序在做什么?
答案 2 :(得分:0)
程序的内存使用量与其二进制或资源的大小并非100%相关。
这取决于你的程序做什么。例如,如果你创建这样的东西:
List<int> list = new List<int>();
for (i=1; i<100000; i++) list.Add(i);
它将需要尽可能多的内存来存储int以及它的对象开销。
这取决于您使用过的用途。
你用winforms标记了你的帖子 - 我假设你有一个gui应用程序。 Gui的内存使用取决于使用的控件及其gui风格(例如动画,悬停效果......)
.NET有一个垃圾收集器,可以在运行时释放未使用的内存。