我们正在开发一个使用Xamarin.iOS的应用程序,它可以渲染实时数据。因此,差不多每秒都会收到来自CLLocationManager()的新位置,然后使用CoreGraphics和UIKit在屏幕上呈现包含复杂和变化的信息的地图。
存在内存泄漏,这意味着根据渲染的复杂性,应用程序会在一段时间后提供MemoryWarning,通常是10-100分钟,然后崩溃。我们不能使用Xamarin.Profiler,因为我们不能努力VS企业版,而且我们不理解Xcode Instruments,这在Xcode13中更加不清楚。
因此,我们正在做的是,系统地跳过代码块,在真实设备上运行模拟位置的应用程序,并等待,直到MemoryWarnings启动。
不知何故,这是可行的,只是非常耗时。
我现在的问题是:
有没有办法监控iOS中的内存消耗/增长?看到它随着每一次循环而上升?类似于:
Console.WriteLine("Current mem: " + GetCurrentIosMemoryConsumtion());我希望看到该值,该值在内部增长,然后触发ReceiveMemoryWarning事件。
编辑:我再次尝试了仪器,但它冻结了2分钟后的应用程序。到那时,已经分配了7GiB,并再次释放。到目前为止只有124MiB持久化。

发布于 2021-11-14 13:17:20
我认为了解Xcode仪器可能会有所帮助。Xcode总是显示使用了多少内存。
打开所有合理的警告。这个问题通常是一个参考循环,你会收到警告。(引用循环防止内存被释放)。看,如果你有任何不弱的代表。或者您是否将对象收集到从未清理过的数组中。
https://stackoverflow.com/questions/69962669
复制相似问题