2012-05-03 77 views
1

我支持Windows Mobile 6 .Net緊湊型框架基於表單的應用程序。現在我們已經達到了應用程序中使用的數據量導致內存不足錯誤的時間點。雖然該應用程序的預期壽命有限,但我希望能夠確信,在開發替代平臺/應用程序之前它將繼續充分發揮作用。在應用程序中使用的數據量並沒有減少,因此一種選擇是減小應用程序代碼的大小。Windows Mobile 6優化應用程序內存消耗

前段時間,我偶然發現了一篇博文或文檔,記得應用程序代碼佔用的內存最小化的一種方法是將所有源代碼移入單獨的程序集並使用小型啓動shell啓動應用程序。在開始使用這種方法之前,我想確認這是正確的方法,並量化通過這樣做可以節省的成本。

上述方法是否正確,如果有,是否有文檔支持它?

回答

3

您描述的將所有應用程序代碼放入受管dll並創建一個非常小的可執行存根以啓動的方法可以減少進程所需的內存量。您將保存的內存量等同於您的可執行文件與下一個最高64Kb邊界對齊的大小。

更多信息請參閱此博客條目: http://blogs.msdn.com/b/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx

這博客條目也有鏈接的WinCE 5的內存管理系統,爲什麼可怕的「DLL緊縮」這樣的大問題的更詳細的解釋。

但是,請注意,自Windows Mobile 6.1推出以來,事情發生了一些變化。原生Dll不再映射到與以前版本相同的位置,讓您的進程擁有更多的內存空間來運行。你在提到的問題中提到了Windows Mobile 6,所以請注意,雖然這表明重構確實會給你更多的內存來處理,但它可能不會給你足夠的(除非你的.exe是巨大的)。

在這裏看到在Windows Mobile 6.1操作系統引入了內存管理更改的詳細信息:

http://bolingconsulting.com/2008/windows-mobile-6-1-memory-management-changes/

+0

感謝,這正是我要尋找的信息。 –

0

我遇到過一次「內存不足」的問題。我不得不創建一個特殊的類來保存我的數據,這些數據沒有包含我的PC應用程序所使用的類的信息。

我從來沒見過你參考過的關於使用一個小啓動shell腳本的文檔,而不是我使用MS-DOS讀過的東西。