在移动设备上检测.net / mono的低内存情况
本文关键字:mono 内存 情况 net 移动 检测 | 更新日期: 2023-09-27 18:12:19
我的。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中还不可用,所以不是一个选项。
iOS将调用DidReceiveMemoryWarning()
在你的UIViewController子类当你运行低内存,允许你释放资源。
Android将在Activity子类上调用OnLowMemory()
。
我不确定Windows Phone上有什么类似的功能,但如果他们有类似的功能,我不会感到惊讶。