Realm Memory Leak (RAM + Disk) issue


Sorry in advance if this isn’t the right place to post this, I couldn’t find a real issue tracker (maybe I didn’t search enough). Please redirect me if that is the case.

I have been using Java Realm in the past for an Android app, that I migrated recently to Kotlin Multiplatform in order to make it compatible with iOS. After testing, it appears that by running it in an iOS environment, my memory was getting saturated by a leak, which affected both the RAM, and the disk (which it would fill up entirely in a few weeks of testing, all 64Gb). So I made a really simple downgraded version of it which showcases what exactly fails in it. In short, by calling the and realm.close methods, I leak memory (instances of realm_scheduler according to my memory graph on Xcode, but anything related to realms seems to create a way too large amount of instances in it).

Here’s a repo to reproduce the error : GitHub - ALXgba/realmKMMIssue: Memory leak using Kotlin API in a KMM project, when run in iOS environment.

As you can see, my Kotlin code only opens a realm instance with a test class before closing it. And I do this every .1s in my iOS code. That’s it. If the same operation is done in its Android counterpart, there is no memory leak. (Sorry, I realize that I didn’t edit this code to also execute the same way in Android. If you wish to test it, you can simply instantiate a RealmLeaker and have it run RealmLeaker.leak() in a while loop).

Possible duplicate without resolution → Memory leak in iOS Realm sdk - #3 by Rajat_Dhasmana

Hi @gba_ALX

This should have been fixed by Fix realm scheduler leak by clementetb · Pull Request #1463 · realm/realm-kotlin · GitHub available from 1.11.0. Would you mind giving it a try and report back?

Tried updating realms to 1.11.0, the issue is still there. I pushed my modifications to the git repo as well.

@Claus_Rorbech I opened a proper issue, please see KMM Realm Memory Leak (RAM + Disk) issue · Issue #1501 · realm/realm-kotlin · GitHub

For anyone experimenting this issue :
The issue has been closed by the following pull request : Fix darwin native leak by clementetb · Pull Request #1530 · realm/realm-kotlin · GitHub
It isn’t pushed in an actual release yet, but using the 1.11.2-SNAPSHOT linked with its current branch fixes the problem. (GitHub - realm/realm-kotlin at releases; see “Using Snapshots” in the for more on that).

This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.