我在C#中编写了一个hello world程序(没有任何UI的Windows应用程序)。 release-build excutable对Thread.Sleep(50000)// 50秒没有任何作用。 我打开了sysinternals(像任务管理器一样的探查器)。这个可以排除的7MB内存(私有字节)!! 任何人都可以解释发生了什么以及如何减少内存使用量。 附:我也尝试使用NGEN预编译.exe但仍然使用相同的内存。
非常感谢
答案 0 :(得分:5)
C#(以及其他JIT编译/解释语言)通常会在后台自动为您做很多事情。虽然你写的很简单,但后台有很多东西需要支持应用程序的JIT特性。
如果内存容量为2GB,那么7MB的内存相对较小。除非你做一些不寻常的事情或分配大量的数组和数据结构,否则它可能不会更多。
如果它是基于C#WindowsApplication项目类型的Hello World,并且Program.cs中的一个int main在Windows窗体上执行application.run,那么不仅有很多JIT开销,而且还有很多Windows窗体开销也是如此。
一天结束时,我确信一切都很花哨。
答案 1 :(得分:2)
.Net应用程序有很多基本开销,但在那之后你的内存增加应该相对较小。
实施例。我的一个应用程序在加载时消耗10MB内存,但是从数据库加载60k行后,它只消耗40MB内存,每行包含多个字符串和许多值。
在现代计算机上,一个小的固定前期值并不坏。可扩展性是现在的主要问题。 .Net可以很好地管理。