swift - Linux 上的 GCD 内存膨胀 Swift

标签 swift linux grand-central-dispatch

我正在处理无界消费者的生产者-消费者问题。生产者可以根据需要将任意数量的任务放入处理队列。当队列为空时,消费者将阻塞线程。

while true {
    do {
        guard let job = try self.queue.dequeue() else { return }
        job.perform()

    } catch {
        print(error)
    }
}

通常我会将循环中的所有内容放入自动释放池中,但是,它在 Linux 上不可用。似乎 ARC 永远不会释放循环中的对象。我应该如何控制内存使用量?

最佳答案

我不认为由自动释放池引起的内存峰值应该在 Linux 上出现。不过,有可能其他东西持有对您的一个对象的引用。尝试在循环中间设置一个断点,然后在调试器中单击“Debug Memory Graph”以查看哪些对象对正在堆积的对象有引用。这有助于确定物体停留时间超过应有时间的原因。

关于swift - Linux 上的 GCD 内存膨胀 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45623749/

相关文章:

ios - 带有 Realm 支持的数据库和在线同步的 UITableView

ios - 如何将 opengl 场景叠加到 ios 相机源上?

android - 从 Android 源 (AOSP) 构建一个工具

linux - 在 Bash 中使用下划线 "_"无法正确打印文件名

python - 为什么 Pygame 不显示我的 pdf?

ios - 如何在后台线程中快速将普通数组保存到 Realm 中

AFNetworking 后台JSON解析避免 block 嵌套

ios - Swift - 如何从 UITableViewCell 中的按钮调用 UIVIewController

ios - 早点从 UIViewPropertyAnimator 完成一些动画

ios - 使用 MapLinks 时如何防止 Safari 启动?