我有一个简单的C#2008应用程序,它显示一个png图片并处理一些简单的MouseEvents。
虽然它并不复杂,但它至少使用了9.5-10 MB的内存(如任务管理器所示)
我已经禁用了任何类型的错误记录,也删除了调试和跟踪符号。 “优化代码”已激活。
有没有办法减少这个?也许有一些选项作为框架的本机编译(这甚至存在于.NET吗?)
有什么想法吗?或者这只是我为.NET-Framework付出的代价?
编辑:10 MB并不多,我知道。但它将在Citrix Presentation Server(或现在称为XenApp)上运行,这意味着一台服务器上有大约30个用户。 30个用户* 10 MB = 300 MB仅适用于这个小应用程序。
提前致谢并提出最好的问候
答案 0 :(得分:10)
无论您做什么,都必须在此过程中加载CLR。 10MB并不是太多的内存而且并非所有的10MB都是私有内存(可能大多数都是可共享的)。顺便说一句,它不像“如果你的简单应用程序占用10MB,使它复杂(内存方面)的两倍将需要两倍的内存(基本上,它是CLR的内存占用。)
我刚刚构建了一个简单的控制台应用程序(for(;;);
)。 “资源监视器”显示它需要大约2.5MB的私有内存和大约7MB的可共享内存。
答案 1 :(得分:0)
您可以查看静态链接(http://www.codeproject.com/KB/cs/htmerge.aspx)之类的内容,但我不确定这会如何影响内存要求。
答案 2 :(得分:0)
.net在这方面的问题是内存是由GarbageCollector管理的,只有当空间不足时才会强制收集未引用的对象。
您也可以尝试手动触发垃圾收集,请参阅此处:MSDN
你可以做的特别是: