首页 > 解决方案 > .Net Compact Framework 控制台应用程序 - 由于 OutOfMemory 而静默终止

问题描述

在无头 Windows CE 6.0 R3 设备上,我正在运行基于 .Net CF 3.5 的控制台应用程序。这个控制台应用程序由许多 DLL 组成,都是托管代码。此外,它没有任何数据库功能,当然也没有 Windows 窗体控件。经过一段随机的持续时间(从大约 12 小时到 48 小时不等)后,此应用程序停止运行,并且看起来它已被 CF 运行时静默终止。以下是调查结果:

  1. 通过 VS2008 进行远程调试不会显示任何运行时异常。即使在 Debug->Exceptions 菜单中的 'Common Language Runtime exceptions'->'System' 启用了 'Thrown'。

  2. .Net CF 远程性能监视器在应用程序终止后显示以下内容: .Net CF RPM GC 内存统计 A. GC 后使用的托管字节值不会急剧上升和下降。B. GC 后使用的总字节数显示一个奇怪的值。

  3. 启用 Windows CE 错误报告没有任何帮助,因为不会生成转储文件。

  4. 唯一可以获得的提示是启用 .Net CF 错误日志记录。在静默应用程序终止后,会创建一个文件“netcf_Error.log”,它通常包含一个单词“ OutOfMemory ”。这个词有时只出现一次或重复几次。

我猜这个问题可能与堆碎片有关,而不是内存泄漏,因为应用程序使用一次性分配的内存缓冲区来完成大部分工作。所以我需要帮助来理解:

  1. 这种静默应用程序终止行为在 .Net CF 3.5 运行时中是否正常?

  2. 如何获取有关此“OutOfMemory”错误的更多详细信息?

标签: c#garbage-collectioncompact-frameworkwindows-ce

解决方案


推荐阅读