代码之家  ›  专栏  ›  技术社区  ›  Moon

C#-应用程序内存问题

  •  2
  • Moon  · 技术社区  · 14 年前

    我用C#编写了一个小型WinForm应用程序。生成的EXE是 74 Kb 179 Kb . 但当我运行它时,它需要 在内存中根据任务管理器。

    所以我的问题是:

    • 为什么会这样?
    • 我能做些什么来缩小这个尺寸?
    • 如果尺寸可以缩小,可以缩小多少?
    3 回复  |  直到 14 年前
        1
  •  3
  •   Rob    14 年前

    首先,使用任务管理器来确定内存使用情况充满了危险。读一读 this article

    • 您还引用了哪些库?
    • 您通过P/Invoke从操作系统请求哪些资源
    • 每个窗体加载多少个实例?

    例如:

    // Will take up a lot of memory!
    var x = new byte[int.MaxValue];
    

    尽管如此,9.1Mb并不是很多(低于2Gb内存的机器内存的0.5%),更重要的是, 你的应用程序使用了9.1Mb的RAM,这真的很重要吗?还是你在浪费时间调查? 记住,你的时间很宝贵。您的最终用户愿意把时间花在其他事情上吗?=)

        2
  •  2
  •   Darin Dimitrov    14 年前

    可执行文件的大小和内存使用是两个完全不同的概念。例如,这个简单的程序:

    class Program
    {
        static void Main()
        {
            var b = new byte[int.MaxValue];
        }
    }
    

        3
  •  0
  •   Andreas Rehm    14 年前

    一个程序的内存使用率与它的二进制或资源的大小不是100%相关的。

    这取决于你的程序做什么。例如,如果您创建如下内容:

    List<int> list = new List<int>();
    for (i=1; i<100000; i++) list.Add(i);
    

    它将需要尽可能多的内存来存储int加上它的对象开销。

    这取决于你用过什么。

    你已经用winforms标记了你的帖子-我猜你有一个gui应用程序。Gui的内存使用取决于使用的控件及其Gui样式(例如动画、悬停效果…)

    NET有一个垃圾收集器,它可以在运行时释放未使用的内存。