gpt4 book ai didi

swift - Swift 中的 Foundation.Data 内存泄漏

转载 作者:行者123 更新时间:2023-11-30 12:05:05 28 4
gpt4 key购买 nike

长话短说,这里有一个代码片段,它很容易消耗尽可能多的内存,直到它停止为止。但为什么?当我将作用域包装在 autoreleasepool 中的 while 内时,没有一个字节被泄漏。但它仅影响当前范围;如果存在泄漏的函数调用,泄漏将继续。那么答案就是将容易泄漏的操作包装在 autoreleasepool 中吗?它看起来有点可笑而且不 swift 。

import Foundation

while true {
let _ = "Foo Bar".data(using: .ascii)
usleep(100)
}

最佳答案

这并不意外。在 while 将控制权返回给运行循环之前,顶级自动释放池不会被耗尽。放入其中的物体会不断累积。

但是,令我有点惊讶的是 ARC 没有立即销毁 Data 实例,因为将它们分配给“cut”意味着它们实际上永远不会在范围内。没有任何名字可以用来指代它们,也没有理由让它们活下去。

关于swift - Swift 中的 Foundation.Data 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46770785/

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