2014-09-12 99 views
-2

我已经开发了写在.NET 4.0/WPF/WCF的应用程序。这是一个电信应用它与大型PBXes连接,并提供用户拨打应用程序的电话。 事件驱动编程的大量已经使用(很多任务并行库的,异步调用),使得硬电话上所做的任何更改反映到实时等应用......巨大的内存消耗差异

应用程序工作正常上高端机器。

我的笔记本配置是RAM:8GB,处理器:Intel I7,逻辑CPU:8,操作系统:Windows 7 SP1(64)

在我的笔记本电脑的应用消耗的内存是大约150 MB。然而,在不同的机器,其中所述配置是RAM上:4GB(可用2.9 GB),双核I3,视窗7 SP1(86)时,存储器消耗大约600 MB。无法弄清楚为什么有这样的区别!

任何指针,请?

+1

使用内存设置,例如一个从[红门](http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/)或[喷气脑](HTTP:/ /www.jetbrains.com/dotmemory/) – oleksii 2014-09-12 14:09:33

+0

我的问题更多的是内存架构x64和x86 ......它的所有相同的应用程序在x86机器上消耗4倍的内存。 – JSK 2014-09-12 14:17:03

+0

指针繁重的应用程序可能会占用两倍的内存使用量。你在谈论私人记忆还是什么?在任何情况下,除非系统内存不足,否则通常没有太多关注的原因 - 如果系统处于内存压力下,Windows和.NET将愉快地释放大量“已用”内存。性能分析是共同的第一步 - 您可以使用免费的CLRProfiler来查看两个进程之间的差异,当然也可以使用VMMap等工具查看虚拟内存使用率之间的差异。 – Luaan 2014-09-12 14:49:49

回答

1

首先,你需要弄清楚,如果这确实是一个问题。

.NET垃圾收集力图置身事外的样子。其中一件事情就是在不需要清洁时避免清洁。如果您有2.9 GB未使用,并且此进程仅使用了600 MB,则垃圾收集器可能根本就不在乎。

所以,拔出内存剖析,并找出如果你真的有问题或没有。

+0

好吧,可能会有一个混淆...... 2.9GB是**可用内存总量** **在x86 ** Windows 7操作系统上的** 4GB。 CPU使用率并不是问题,但它会降低系统的性能;当我杀死应用程序时,内存释放将近18-20%。 – JSK 2014-09-12 16:30:20

+0

我正在通过链接:http://msdn.microsoft.com/en-gb/magazine/cc163715.aspx可能有一些答案在那里。 – JSK 2014-09-12 16:31:02