2011-05-25 48 views
2

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

该应用程序运行良好,直到最近。数据量很大,我们很频繁地收到内存不足的异常。使用Hibernate事件,我已经确认操作系统确实要求应用程序释放资源(Hibernate事件不断被触发)。问题是,我真的没有看到任何可以释放的东西 - 列表和字典等都被应用程序使用。

我知道移动5/6硬盘有32 MB /应用限制(实际上只有18-20 MB,每http://dev.fittingsites.com/bol/2008/windows-mobile-6-1-memory-management-changes)。

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

回答

1

您使用哪种方法从SQLCE数据库中读取数据? SQLCE提供了两种主要方法:DataSetsResultSets。已知DataSet消耗大量内存并降低应用程序性能。如果您正在使用DataSets,我会建议尝试切换您的应用程序以使用RecordSets。有关更多详细信息,请参阅this page

+0

这是2年前的有用信息。卫生署。 – 2012-05-02 23:38:11

+0

@大卫这不是我问谁的问题... – yms 2012-05-03 01:39:10

+0

只是说。我有一个在任何地方都使用DataSet的移动应用程序。如果几年前我有关于ResultSets的信息,我可能不会出现内存不足错误。 – 2012-05-03 01:42:59