相关疑难解决方法(0)

iOS内存使用量增加,找不到罪魁祸首

我正在尝试使用AFNetworking 2.5下载大量图像并将它们传输到磁盘.根据Xcode中的内存监视器,这会导致无限制的内存增长(最终导致内存警告和强制退出) - 但使用分配工具分析内存使用情况会显示内存使用情况稳定.

我想在这里认为Xcode是错的,但为什么我的应用程序会被iOS杀死?

仪器显示这一点 - 峰值是核心数据查询,其余是图像下载 - 峰值约9.5MB,其余约8.5MB

仪器

我也尝试了快照分析 - 它显示了一点点增长,但远不及Xcode报告的数量

快照分析

Xcode的内存监视器显示了这一点 - 每次迭代增加了多个MB.

Xcode内存使用情况

有没有办法让仪器向我展示Xcode看到的东西?或者有没有更好的工具来找出所有这些记忆的去向?

谢谢!

xcode instruments ios afnetworking

11
推荐指数
1
解决办法
6299
查看次数

使用Metal的较旧设备的内存使用率不断上升

我使用MetalCADisplayLink实时过滤CIImage并将其渲染为MTKView

// Starting display link 
displayLink = CADisplayLink(target: self, selector: #selector(applyAnimatedFilter))
displayLink.preferredFramesPerSecond = 30
displayLink.add(to: .current, forMode: .default)

@objc func applyAnimatedFilter() {
    ...
    metalView.image = filter.applyFilter(image: ciImage)
}
Run Code Online (Sandbox Code Playgroud)

根据Xcode中的内存监控器,iPhone X上的内存使用情况稳定,并且永远不会超过100mb,在iPhone 6或iPhone 6s等设备上,内存使用率一直在增长,直到最终系统终止了该应用程序。

我已经使用检查了内存泄漏Instruments,但是没有泄漏报告。通过分配运行该应用程序也不会显示任何问题,并且该应用程序也不会被系统关闭。我还发现有趣的是,在较新的设备上,内存使用情况是稳定的,但在较旧的设备上,它的使用却在不断增长。

过滤器的复杂程度无关紧要,因为即使我尝试了大多数简单的过滤器,问题仍然存在。这是我的金属文件中的一个示例:

extern "C" { namespace coreimage {

    float4 applyColorFilter(sample_t s, float red, float green, float blue) {

        float4 newPixel = s.rgba;
        newPixel[0] = newPixel[0] + red;
        newPixel[1] = newPixel[1] + green;
        newPixel[2] = newPixel[2] + blue;

        return …
Run Code Online (Sandbox Code Playgroud)

core-image ios cadisplaylink swift metal

5
推荐指数
1
解决办法
132
查看次数