在无头Windows CE 6.0 R3设备上,我正在运行基于.Net CF 3.5的控制台应用程序。此控制台应用程序由许多DLL组成,都是托管代码。此外,它没有任何数据库功能,也没有Windows窗体控件。 在一段随机的持续时间(大约12小时到48小时)之后,此应用程序停止运行,看起来它已被CF运行时静默终止。以下是调查结果:
通过VS2008进行远程调试不会显示任何运行时异常。即使在Debug-> Exceptions菜单中,'Common Language Runtime exceptions' - >'System'也已启用'Thrown'。
应用程序终止后,.Net CF远程性能监视器显示如下: .Net CF RPM GC memory statisics A.使用中的管理字节GC值不会大幅上升和下降。 B.使用的总字节数在GC显示奇怪的值后。
启用Windows CE错误报告没有任何帮助,因为未生成转储文件。
唯一可以获得的提示是启用.Net CF错误记录。静默应用程序终止后,会创建一个文件'netcf_Error.log',它通常包含一个单词“ OutOfMemory ”。这个词有时只出现一次或重复几次。
我猜这个问题可能与堆碎片有关,而不是内存泄漏,因为应用程序使用一次性分配的内存缓冲区来完成大部分工作。所以我需要帮助理解:
.Net CF 3.5运行时此静默应用终止行为是否正常?
如何获取有关此“OutOfMemory”错误的更多详细信息?