Why won't assets unload from memory?

I’m doing some thorough memory checking via FindObjectsOfTypeAll, and it turns out some (most) assets never leave memory.

Load a scene then leave it? All the scene’s GameObjects stay right there, floating in limbo.

Delete every single object in the scene? They’re still there, presumably keeping themselves alive with the laughter of small children.

Resources.UnloadUnusedAssets() does absolutely nothing.

Is there any way to trace Unity’s asset-rooting check to see just what sort of tangled web it has traced to decide everything is worthy of life and adopt some sort of garbage collection pacifism?

Clarification: Most of the assets are not stored in the Resources folder, but as scene objects and as prefabs that are instanced as needed. I have edited the text to reflect this.

They are staying there for in case you will need them in runtime. Loading an asset into memory is very expensive so it’s better to keep them in memory. If you need them they will be there waiting for you. If you go out of memory when you need other assets which is not loaded yet, the old ones (floating in the memory) will be deleted. You should not care about it.

Turns out I never had heard about Unity’s memory profiling feature. Using that I was able to narrow down prefabs that just wouldn’t get off memory and change the way they were loaded.