c# - .Net Compact Framework 控制台应用程序 - 由于 OutOfMemory 而静默终止
问题描述
在无头 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 内存统计 A. GC 后使用的托管字节值不会急剧上升和下降。B. GC 后使用的总字节数显示一个奇怪的值。
启用 Windows CE 错误报告没有任何帮助,因为不会生成转储文件。
唯一可以获得的提示是启用 .Net CF 错误日志记录。在静默应用程序终止后,会创建一个文件“netcf_Error.log”,它通常包含一个单词“ OutOfMemory ”。这个词有时只出现一次或重复几次。
我猜这个问题可能与堆碎片有关,而不是内存泄漏,因为应用程序使用一次性分配的内存缓冲区来完成大部分工作。所以我需要帮助来理解:
这种静默应用程序终止行为在 .Net CF 3.5 运行时中是否正常?
如何获取有关此“OutOfMemory”错误的更多详细信息?
解决方案
推荐阅读
- python - AIOKafka:以前工作的代码现在在 send_and_wait 失败
- javascript - 如何使用 AngularJS 将 json 中的 url 超链接到同一 JSON 中的文本
- postgresql - postgres 9.6 中的 /pg_log/ 在哪里
- api - 在 nginx 后面运行的 Web 前端无法查询 API
- scala - 如何使用 Akka Persistence 保存流数据
- android - 使用 Room Persistence Storage 在 Sqlite 中更改列的数据类型
- drools - 尝试在 Drools Workbench 中构建时出错
- javascript - 注入动态样式标签被缓存
- android - onCharacteristicChanged() 被多次调用
- unit-testing - 测试用例失败:参数不同!通缉: