все зависит от того, какой код. Чтобы GC нормально освобождал память, надо следить, чтобы не было ненужных ссылок на объекты. Если на объект несколько ссылок он не удалится. Особенно опасны в этом смысле замыкания
o = {}
foo = function(o){ return function(){}}(o)
delete o // пока существует foo, о висит в памяти
Больше используй делегирование, не используй миксины и замыкания бездумно, следи чтобы ненужные ссылки всегда удалялись, в этом ключе, короче.
А четкого лимита никакого нет, кроме системного, все зависит от конкретной машины. Просто будет все тормозить, и зависать, если не упадет