gpt4 book ai didi

c# - 在移动设备上检测 .NET/Mono 中的低内存情况

转载 作者:行者123 更新时间:2023-11-30 22:04:59 24 4
gpt4 key购买 nike

我的 .NET 应用程序正在 Windows Phone、Android 和 iOS 上运行(通过 Mono)。

我正在寻找一种方法来检测内存不足的情况,然后再抛出 OutOfMemory 异常(或应用程序死机,这通常发生在移动平台上)。

我的应用程序有一种方法可以通过使用不同的代码路径来立即减少内存使用量。不幸的是,我需要知道什么时候这样做 - 我需要知道在我被操作系统关闭之前内存不足。

我并不是在寻找 100% 有效的 Elixir 。任何可以降低内存不足崩溃频率的方法都是好的。

例如,以下是否有意义:

// 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 将在您的 UIViewController 子类上调用 DidReceiveMemoryWarning(),以便您释放资源。

Android 将在您的 Activity 子类上调用 OnLowMemory()

我不确定 Windows Phone 上的等效项是什么,但如果他们有类似的东西我也不会感到惊讶。

关于c# - 在移动设备上检测 .NET/Mono 中的低内存情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24687230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com