我回答一下第一个问题,JS 内存管理依赖 JS 引擎的垃圾回收机制,垃圾回收机制是不断发展的一项技术,尤其是在 JS 引擎中,这十年来发生了天翻地覆的变化。对于普通开发者来说,你需要做就是,保障你想要释放的对象,不再被任何其他对象引用即可,至于这个对象的内存什么时候被释放,完全由垃圾回收机制说了算,一般情况下,v8 / Spidermonkey / ChakraCore / JavascriptCore 这些引擎的分片回收机制都会很及时得回收垃圾,但是,总会遇到一些情况释放不会那么及时。
假设两种情况,一个常驻对象,在游戏进程中存在了很长时间,但是某个时间点突然变成垃圾了,另一个对象,是一个函数的临时对象,函数退出时它就变成垃圾了。这两种情况下,第二种基本都会及时被回收,而第一种则很难被及时回收。
所以事实上就是无法确定内存确切释放的时间,不过不用担心,一般垃圾回收机制是很及时的。下面是 JS 内存管理的简介性质的文章
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management
对于 Creator 引擎来说,需要区分引擎内部对对象的引用,和用户代码对于对象的引用,引擎提供了一些机制来管理引擎内部的引用,而用户代码的引用则无法提供任何有效的 API 来管理,需要用户自行管理。游戏中对于内存影响最大的是资源对象,可以参考这篇文档中对于资源对象的内存管理

