2

我们有一个用 C# 编写的 .NETCF 3.5 应用程序,其中我们使用一些相当大的对象列表和字典,填充来自 SQL Server 的数据并持久保存到设备上的 SQLCE 数据库。

直到最近,该应用程序运行良好。数据量如此之大,以至于我们经常遇到内存不足异常。使用 Hibernate 事件,我已经确认操作系统确实在要求应用程序释放资源(Hibernate 事件不断触发)。问题是我真的看不到任何可以释放的实质性内容 - 列表和字典等都被应用程序使用。

我知道 Mobile 5/6 中存在 32 MB / 应用程序的硬性限制(实际上只有 18-20 MB,根据http://dev.fittingsites.com/bol/2008/windows-mobile-6-1-memory-管理变化)。

我在这里有点不知所措。如果应用程序需要大约 25 MB 才能运行,它如何在 Mobile 5 上运行?是否有解决方法,例如在内存映射文件或类似文件中存储列表或字典,而不需要大量工作(或减慢速度)?

4

1 回答 1

1

您使用哪种方法从 SQLCE 数据库中读取数据?SQLCE 提供了两种主要方法:DataSetsResultSets。众所周知,DataSet 会消耗大量内存并降低应用程序性能。如果您使用的是 DataSets,我建议您尝试将您的应用程序切换为使用 RecordSets。有关详细信息,请参阅此页面。

于 2011-05-29T00:58:45.833 回答