基本上就像 Jonatan Hedborg 所说的,你不能直接控制垃圾收集的内容。
我的猜测是您来自 ac/c++ 背景或类似的背景,您负责更严格和直接地维护内存,AS3 和 Java 并非完全如此;尽管内存管理仍然非常重要,但它更多的是在对象级别处理。虽然 Boolean 是从 Object 扩展而来的,但这里关于原始类型:
Null 数据类型 Null 数据类型仅包含一个值 null 。这是 String 数据类型和定义复杂数据类型的所有类(包括 Object 类)的默认值。其他基本数据类型(例如 Boolean、Number、int 和 uint)都不包含值 null 。如果您尝试将 null 分配给 Boolean、Number、int 或 uint 类型的变量,Flash Player 和 Adobe AIR 会将 null 值转换为适当的默认值。您不能将此数据类型用作类型注释。
http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f88.html#WS5b3ccc516d4fbf351e63e3d118a9b90204-7f82
在这两种情况下,您确实有一些机制,例如将对象从所有活动对象的图表中分离出来的引用归零,这意味着它们将在垃圾收集器的下一次计划运行时被垃圾收集(可以强制但不是真的推荐,在这种情况下,JVM 或 AVM 的配置将根据它正在运行/执行的系统来处理它)。
清空一个对象将允许它被垃圾收集,但你不应该真正关心单个原始属性。这里有一篇很好的文章解释了 AS3 中垃圾收集的一些细节(我会留下一个摘要,但整个页面都很好,我认为垃圾收集的要点不一定是 100% 直截了当的,但可以通过一些努力托管):
http ://tomgabob.blogspot.com/2009/11/as3-memory-management.html
基本上,它的工作方式是 FlashPlayer 或任何正在运行您的(字节)代码的虚拟机,其中包含已创建的所有对象以及当前引用的图形。
它还根据环境(配置等)对可以使用的内存进行了限制,因此 GC 设置了算法来确定何时应该尝试进行垃圾收集。您应该主要关注对不再需要的对象的引用置空,如果您的应用程序不是相当复杂,或者您的硬件在 RAM 方面没有非常严格的限制,这真的没什么大不了的。
因此,关注点不应该是让 GC 运行得太少或太多,而是创建永远不会删除的引用(添加侦听器而不是从应该收集的对象中删除,或者只是在集合中引用它们等等。需要更长的时间)。上面的文章再次更深入地解释了这一点。