Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
to your account
Swift 5.5. on macOS 11.6
The following examples need to be wrapped inside autoreleasepool / try autoreleasepool in order for the memory to be freed afterwards:
myString.replacingOccurrences(of: "[eo]", with: "l", options: .regularExpression, range: nil)
try Data(contentsOf: URL(fileURLWithPath: "myFile"))
This should not be necessary. And the effect of having memory leaks when not using autoreleasepool may come as a big surprise for beginners, since autoreleasepool is not even mentioned in the Swift book.
Furthermore, using autoreleasepool is not platform independent, and you then need to use something like the following for platform-independent code: https://github.com/apple/swift-docc/blob/38acdaddf610be6b943d82f0d9da628384784a81/Sources/SwiftDocC/Utility/FoundationExtensions/AutoreleasepoolShim.swift.
The issue seems to be a recurring topic, see e.g.:
Also see the discussion on https://forums.swift.org/t/the-role-of-autoreleasepool-in-swift-and-thoughts-about-memory-management-in-swift/52976.
The text was updated successfully, but these errors were encountered:
No branches or pull requests