2012-05-03 43 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读过的东西。