Just to be clear, you don't remove with `m.top.removeChild()` but by calling .removeChild() on the parent
I.e. in the general case that is parentNodeObject.removeChild(childNodeObject)
In the special case where the noid was added as child to a custom component (often a Scene), where the current script is running - then yes, the parent is `m.top` and the special-case incantation is m.top.removeChild(noid) indeed. But if you were trying to remove child of a child of a scene, "m.top" won't do.
Regarding if the removeChild()-ed node gets de-allocated, did you make sure there are no more variables pointing to it? Sometimes you'll have to do things like `myChildNode = invalid` right after calling .removeChild(myChildNode) to severe the last remaining link.
Regarding the if the children of removed child get garbage-collected... well, generally speaking they should be - or at least that was the case in SDK1 - but i won't put it past RSG screwing the pooch here. See https://sdkdocs.roku.com/display/sdkdoc ... plications
which is beating around the Bushes regarding node-cycles - and for the life of me i cannot tell if forced garbage collection can get rid of these before channel terminates or not?