Skip to content
New issue

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? Sign in to your account

Potential memory leak with AnimatedImage with a context menu modifier on macOS #253

Open
andylin2004 opened this issue Jan 14, 2023 · 3 comments

Comments

@andylin2004
Copy link

I have a SwiftUI multiplatform project where I have a ScrollView containing a LazyVGrid, which contains a bunch of VStacks containing a AnimatedImages, all of which are given the purgeable(true), pausable(false), resizable(), and scaledToFit() modifier, and a Text. The VStack is given a contextMenu modifier that passes in a text, button, or a combination of the two (the text and/or buttons could be wrapped in a view and the same thing would happen).

On iOS, if I activate the context menu (by long pressing on the VStack), there isn't a spike in RAM use. However, on macOS, if I activate the context menu (by clicking on the VStack with two fingers), the RAM use spikes and never drops down at all, indicating a memory leak issue. I'm not too sure how this is happening, but I have a suspicion that there is something to do with either macOS's implementation of a LazyVGrid or how AnimatedImage is implemented on macOS.

@dreampiggy
Copy link
Collaborator

dreampiggy commented Jan 15, 2023

AnimatedImage (actually, it use a UIViewRepresentable SDAnimatedImageView) has a onDisappear clear frame cache behavior on iOS, rely on iOS's UIKit UIView lifecycle. And has a low memory warning to clear frame cache, rely UIApplicationDidReceiveMemoryWarning notification.

This does not works on macOS seems (The onDisappear should be works I think).

But it's not a "leak" in general, if you totally make your LazyGrid disappear, the cache frame should be free.

@dreampiggy
Copy link
Collaborator

Can you provide a Xcodeproject demo for me to investigate ? I did not have a real-formed macOS App to use LazyVGrid.

@andylin2004
Copy link
Author

Here is a Xcode project demo that basically demonstrates the issue. I am pulling the images from a remote source (Giphy) and the issue described above still occurs. https://github.com/andylin2004/TestGifVGridApp

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants