1

我支持基于 Windows Mobile 6 .Net 紧凑框架表单的应用程序。我们现在已经达到了应用程序中使用的数据量导致内存不足错误的地步。虽然该应用程序的预期寿命有限,但我希望它能够继续充分发挥作用,直到开发出替代平台/应用程序。应用程序中使用的数据量并没有变小,因此一种选择是减少应用程序代码的大小。

前段时间,我偶然发现了一篇博客文章或文档,我记得它指出了将应用程序代码占用的内存最小化的一种方法是将所有源代码移动到单独的程序集中并使用小型启动 shell 启动应用程序。在开始研究该方法之前,我想确认这是正确的方法并量化这样做可能实现的节省。

上述方法是否正确,如果正确,是否有支持它的文档?

4

2 回答 2

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/

于 2012-05-03T17:24:16.107 回答
0

我曾经遇到过这个“内存不足”的问题。我必须创建一个特殊的类来保存我的数据,它所包含的信息不如我的 PC 应用程序使用的类那么多。

除了我在使用MS-DOS中阅读的内容之外,我从未见过您引用的关于使用小型启动 shell 脚本的文档。

于 2012-05-03T12:51:05.563 回答