我开始在我的生命中第一次用C#编写一个大型应用程序.我编写了示例模块来测试我的软件背后的想法.该模块包含几十个C#字典和对象列表,每个对象都有几个成员和属性.
令我震惊的是,在初始化核心对象后,它最终使用了大约40MB的RAM.
我测试并发现在对象初始化之后分配了超过30MB,但我的印象是,考虑到我的对象的大小,应该消耗不超过几百千字节.
我是否做错了什么,或者与本机代码应用程序相比,.NET自然是内存密集型的?
使用任务管理器来查看您的内存使用情况可能非常不准确.
相反,抓住一个适当的内存分析工具(dotTrace非常好,并有一个10天的试用期),并花时间看你的实际内存消耗.
我在自己的代码中看到的各种各样的东西包括
在我们在一台机器上有几GB RAM的日子里,像你一样用C#构建的面向用户的应用程序应该只使用几个100K的RAM是倒退的.系统上任何未使用的ram都会被浪费掉.
考虑到这一点,C#使用与C++完全不同的策略来分配内存,这样就可以更少地分配和释放更大的块.
也就是说,40似乎有点高.对于非常简单的控制台应用程序,我已经习惯了接近10-14Mb的东西.也许有一个形式占用ram,或者我可能使用不同版本的框架(2.0).