【发布时间】:2021-12-25 23:13:40
【问题描述】:
我们正在使用 Xamarin.iOS 开发一个应用程序,它正在呈现实时数据。因此,每秒钟或多或少都会从 CLLocationManager() 接收到一个新位置,然后使用 CoreGraphics 和 UIKit 在屏幕上呈现包含复杂且不断变化的信息的地图。
存在内存泄漏,这意味着根据渲染的复杂性,应用程序会在一段时间后发出 MemoryWarning,通常是 10-100 分钟,然后它就会崩溃。 我们不能使用 Xamarin.Profiler,因为我们不能努力 VS Enterprise,而且我们不了解 Xcode Instruments,这在 Xcode 13 中更加不清楚。
因此,我们正在系统地跳过代码块,在模拟位置的真实设备上运行应用程序并等待,直到 MemoryWarnings 开始。
这个方法可行,只是非常耗时。
我现在的问题是:
有没有办法监控 iOS 中的内存消耗/增长?看到它随着每个循环而上升?比如:
Console.WriteLine("Current mem: " + GetCurrentIosMemoryConsumtion());
我希望看到该值在内部增长,然后触发 ReceiveMemoryWarning 事件。
编辑:我再次尝试了 Instruments,但它在 2 分钟后冻结了应用程序。到那时,已分配并再次释放了 7GiB。到目前为止只有 124MiB 持久。
【问题讨论】: