Bounding shapes, transforms, etc. all need to be recalculated all the way up the scene graph. Things that might not have been active before need to be active. So, the data might have still been on the GPU or it might not. Once you detach it then the system is free to decide that the space can be used for other things.
No. Nothing gets sent to the GPU until render.
You are better off limiting the number of thing you attach per frame.
Let’s say you have 100,000,000 bytes of RAM and each chunk takes 90,000 bytes on average… but for a while they took 100,000 bytes. Because your new ones only took 90,000 bytes you kept the old buffers around and reused them. So now you can physically only have 1000 chunks in RAM… but if you right-sized your buffers, you could have 1,111 in RAM.
It doesn’t matter whether we are talking about direct memory or heap memory. For me, the single biggest thing I always wanted was a more distant horizon and the single biggest limiter to that was RAM usage. I took every opportunity possible to push out the clip distance… byte buffers instead of float for position, precalculated normals/tangents/etc. based on an int attribute… whatever I could do to get the direct memory down so I could have more chunks visible. 192 meter max clip was a constant RAM pig gobbling up the memory I needed to run the game itself. And that’s not even very far away. Even LOD has minimal impact there.
In the new engine, I opted to render far terrain completely different just so I could at least push the visible horizon out to 2 km or so… then 128 m clip was ok. It just creates a whole bunch of other “can I get away with this?!?” visual problems.