I don’t know if Epic will consider this to be a bug per-say, rather than a design choice, but the annoyance of it has compounded over the years that I felt it was worth raising to improve user experience and productivity.
Opening an asset in the Editor (whether it opens the Skeletal Editor, Blueprint Editor, Mesh Editor, etc) causes memory reference caching - as expected. Closing the editor window usually doesn’t clean up the reference straight away - this is also what I’d expect; it makes sense to cache for faster re-opening and/or for garbage collection reasons.
My issue is, since UE4 went public in 2014, trying to delete an asset cleanly (without using ‘Force Delete’) generally results in complaints about memory references. This can even happen after import without opening any of the freshly imported assets. While you can sometimes wait a bit for garbage collection to remove any old references, I’ve had times where it has retained memory references for extremely long periods of time without any apparent reason.
Is there not a simple means where the Editor can confirm that the asset has a reference cached without anything actually currently using the reference (surely it has a flag for clean-up priority)? This way, it could allow a ‘Delete’ approach without mentioning the memory references as a conflict issue with delete, where deleting the asset will trigger manual garbage collection so as to clean up the cached references before actually deleting them.
Generally, whenever I delete anything from a project, I almost always end up restarting the Editor so that it will allow me to cleanly delete. While I’m not deleting assets on a regular basis, it happens often enough that it irritates me. I realise I can use ‘Force Delete’ but, to stay on the safe side, I’d rather not get in the habit of doing that so as to avoid an accidental case of doing it when it would cause problems to do so.
I’d say this is something that is not going to change. If you’re accidentally deleting something that is referenced by other assets and is not a memory reference case, then the force delete dialogue box will look different and include the replace references option.
I get that this can be a little annoying, but we’d rather warn the user that the assets they’re deleting are still being referenced in memory.
I’d note this as a case like when we moved all of the “Convert In Place” and “Skip Conversion” options to a buried menu when upgrading a project from one engine version to the next. We had a ton of users clicking convert in place and possibly corrupting their projects. Kind of better safe than sorry.
Oh I definitely wasn’t meaning to remove the ‘Force Delete’ option. I meant if a delete request is made and there are memory references that exist from having opened an editor window but having already closed it (where nothing is currently needing the memory reference anymore), that the Editor will clean up/garbage collect references that aren’t being used that are wanting to be deleted rather than continuing to cache those memory references.
Thanks for the response on it, I figured it’d probably be something not worth the time. I guess I’ll stick to closing the Editor off and re-opening it every time I want to delete something (as I prefer not to risk the Editor spazzing out with using any ‘Force’ functionality).
I was only suggesting a way to tell if it’s OK to force delete or not by pointing out the differences in the two force delete windows. I’d say overall, you’re fine force deleting if the only thing it says is that the asset is still referenced in memory. Do you run into the editor freaking out by force deleting? I don’t ever seem to have problems.
Oh yeah I understand the difference between them. I more meant that you will have it saying memory references exist when you actually are referencing them in Editor windows (like the mesh or window) whereas when you have closed them it still caches the memory references.
Well as I say I avoid using Force Delete as I don’t want to be in the habit of using it so as to avoid accidentally doing it when there are actual references that will break things. In terms of the Editor freaking out, I more meant in the sense that the Editor isn’t always 100% stable (have been many things that have caused it to crash in the past; I have had blueprints become corrupt for no reason in much earlier version ~4.10) so I was more meaning I don’t want to risk doing something that may (however unlikely) result in undesirable effects to the Editor.
Yeah, the Editor just froze on me when I Force Deleted with only Memory References … just three items … arg … I would prefer to be able to investigate and resolve those references before proceeding/returning to the delete.
Force deleting often slows my editor to a crawl so I myself would like to see this get resolved since it forces me to restart my editor and sometimes my computer if it locks up.
EDIT: In better news the amount of time it took me to search and find this post allowed Unreal garbage collection to clear my asset from memory so I got that going for me, which is nice.
It is now 2020 and this issue still not addressed, very annoying needing to restart the editor when trying to delete an asset that only has a memory reference and no longer used.
its almost 2022 and this issue still exists. and it gets even worse on bigger projects force deleting an asset that is only referenced in memory freezes the engine and the whole engine needs to be force closed from task manager.
Bumping again. Issue persists in Unreal 5.0 May 2022. Really annoying, it should be able to clean things up for itself, or at least communicate more clearly to the user. This is a UX issue for sure even if it isn’t an actual “engine” issue.
The tip about recognizing whether they are “real” references or just old memory was helpful but still way more confusing then it should be (like spending 15 minutes reading this forum just to delete a single file).
Oct 2022. Still an annoying issue. I remove all references to the asset, close all editor windows, save my project, and still get a “Force Delete” because of a memory reference. Restarting UE fixes the memory references but I don’t always do that. Every time I click the “Force Delete” button, I little sliver of me holds my breath for fear of breaking my project.
On the “Force Delete” window there should be a “Clear memory cache” or “Reset memory references” button to remove memory references to assets that are not used anywhere in your project so you can do a clean, stress-free delete.
Still experiencing it with UE 5.2, I always restart the Editor when I’m about to delete something rather than clicking the “force delete” button, even if it’s just the memory reference, because “force delete” once corrupted my project. I feel like the idea world is the the engine determine if the memory reference is safe to remove and if yes, show a normal “delete” button.
I’m getting this window popping up showing the classes still referencing it even though they are actually no longer referencing it. I’ve deleted the references to it in those classes yet they are still showing in this dialogue box as referencing the asset I wish to delete. ue 4.27