- Home /
How to find 'unreleased' references programmatically and prevent not enough memory crashes?
Right now I'm stuck in the middle of project, because we have a huge issue with instance references not being 'freed', thus these instances are not collected by the GC and the memory keeps being allocated, which results in a memory crash sooner or later.
I read a lot regarding these issues but sooner or later I seem to run into one of those two walls:
windbg ans SOS.dll are fine tools but they don't work properly with Unity
the Unity memory profiler is not sufficient for the task
I did some research and analysis on our code and I think I identified the objects in question (which are non MonoBehaviours by the way). Now I 'just' need to get the objects referencing these instances.
It is not really an option for me to go through the code and check all references 'by hand'. The code isn't well structured and it would be very tedious to check everything and quite error prone (not impossible though, but I'd like to avoid that).
Maybe there is a way using AOP (Mono.Cecile should work with Unity) to achieve this goal? I haven't had to much with aspect oriented programming so I'm not sure if this would be of any help.
I checked with the 'new' memory profiler for 5.3.x, but same as the default detailed memory profiler view, it doesn't show the instances in question, neither the memory loss is displayed (on the other hand, the simple memory profiler shows the memory loss just fine).
I'm running out of ideas here. Anybody experienced similar problems in their Unity apps and found a way to keep track of references without huge modifications to the code base?
What's the best practice for these kind of errors anyway? Sure, try to avoid it all together, but what to do if you're already in trouble and the code base is too big to check manually?
Your answer
