【发布时间】:2014-07-10 22:18:04
【问题描述】:
我的 .NET 应用程序正在 Windows Phone、Android 和 iOS 上运行(通过 Mono)。
我正在寻找一种方法来在引发 OutOfMemory 异常之前检测内存不足的情况(或应用程序死机,这通常发生在移动平台上)。
我的应用程序可以通过使用不同的代码路径来立即减少内存使用量。不幸的是,我需要知道何时这样做 - 我需要在操作系统关闭之前知道内存不足。
我不是在寻找可以 100% 工作的灵丹妙药。任何可以减少内存不足崩溃频率的方法都是好的。
例如,以下是否有意义:
// Periodically (say once per a few seconds) execute the following:
try
{
byte[] probe = new byte[1 * 1024 * 1024];
}
catch (OutOfMemoryException)
{
// 1MB free block not found, choose low memory code path
}
这有增加垃圾收集频率的缺点。有没有更好的办法?
非解决方案:
- .NET MemoryFailPoint 类,遗憾的是它在 Mono 中尚不可用,因此不是一个选项。
【问题讨论】:
-
我认为您应该进行特定于平台的内存检查,这是针对 android 的检查,例如 stackoverflow.com/questions/3170691/…
标签: c# .net memory mobile mono