为什么基本的Swift代码会导致内存泄漏?

伊万·克拉玛查克(Ivan Kramarchuk)
import Foundation

let path = "/Users/user/file.swift"
while (true) {
    let _ = path.components(separatedBy: "/")
}

以及如何防止这种情况?

代码当然是演示。

罗布·纳皮尔

此代码不会泄漏。它只是(可能)永久存储内存,因为您永远不会通过耗尽自动释放池来释放它。您可以通过使用以下命令创建自己的自动释放池块来解决此问题@autoreleasepool

while (true) {
    @autoreleasepool {
        let _ = path.components(separatedBy: "/")
    }
}

通常在事件循环结束时会自动耗尽该池,但是此代码永远不会达到这一点,因此它需要创建和释放自己的池。

上面的“(可能)”是因为它取决于优化器设置以及有关components(separatedBy:)当前实现方式的详细信息在许多情况下,优化器会自动处理自动释放的对象。

有关自动释放池块的更多信息,请参见《高级内存管理编程指南》中的“使用自动释放池块”。有关可可内存管理的更多背景(以及自动释放的含义),请参阅该指南的其余部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么这个二进制输出代码会导致内存泄漏

为什么此JavaScript会导致内存泄漏?

为什么调用堆栈数组会导致内存泄漏?

为什么使用“ new”会导致内存泄漏?

为什么重复调用FileOpenDialog会导致内存泄漏?

为什么这个函数会导致内存泄漏?

为什么嵌套的initializer_list会导致内存泄漏

为什么此功能会导致内存泄漏?

为什么此Swift代码会泄漏内存,我该如何处理呢?

为什么/我的代码如何导致内存泄漏?

为什么指向同一个内存的多个共享指针会导致内存泄漏?

为什么此代码会导致内存耗尽?

为什么Rxjava可能导致内存泄漏

Delphi:为什么这会导致内存泄漏?

为什么 Devel::LeakTrace 会泄漏内存?

是否有为什么会AccessibilityManager.sInstance导致内存泄漏的一个原因?

为什么Node.js中的全局数组会导致内存泄漏?

为什么将列表附加到其自身然后删除会导致内存泄漏

如果重置了回调,为什么静态Drawable会导致Android泄漏内存?

为什么即使删除后std :: string也会导致类中的内存泄漏

为什么Objective-C中的“ try catch”会导致内存泄漏?

为什么类型化数组会导致JavaScript中的内存泄漏

为什么用CGImageSource加载gif会导致内存泄漏?

为什么C#中的Lambda表达式会导致内存泄漏?

为什么此Observable.Generate过载会导致内存泄漏?[使用Timespan <15ms]

为什么向向量添加智能指针会导致内存泄漏?

这段代码会导致 kotlin 内存泄漏吗

这段代码是否会导致 JavaScript 内存泄漏

下面的代码会导致内存泄漏吗?