I can reproduce the leak in the Terrain demo as well. I add a viewport and remove its items, then in the TViewmain.Start I set:
Viewport1 := DesignedComponent('Viewport1') as TCastleViewport;
Viewport2 := DesignedComponent('Viewport2') as TCastleViewport;
Viewport2.Items := Viewport1.Items;
Viewport2.Camera := Viewport1.Camera;
The rate the memory is consumed appears to be based on the size of the viewport2. So this one is pretty big so memory is going fast.
(32bit, win10)
Here it has eaten 170mb doubling memory usage in just a few minutes. (0.6mb/second)
Here is the whole folder minus exe.
terrain.zip (11.7 MB)