2014-09-12 80 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