gc_get_stats

使用此函数,您可以检索有关垃圾收集器当前状态的信息。该函数将返回一个struct,它将包含以下成员变量(请注意,这里的 "对象" 是指任何可以被垃圾回收的东西,不是资源浏览器中定义的通用对象实例):

GC 统计结构
变量类型描述
objects_touchedReal这是垃圾回收器在前一帧中找到的活动对象的数量。这将根据收集的世代而有所不同。
objects_collectedReal垃圾回收器确定在前一帧中未处于活动状态的对象数量,因此可以将其删除。
traversal_timeReal这是垃圾收集器找出哪些对象处于活动状态所花费的时间(在主线程上)。
collection_timeReal这是垃圾收集器清理被视为不活跃的对象所花费的时间(以微秒为单位)(在单独的线程上)。
gc_frameReal这是一个计数器,每次发生垃圾收集传递时都会递增。如果禁用垃圾收集,则不会增加。
generation_collectedReal这是上次收集的那一代的索引。0 是最年轻的一代,3 是目前最古老的一代。
num_generationsReal这是垃圾收集的总次数。
num_objects_in_generationArray of Reals这是一个数组(大小为num_generations),包含每代对象的数量。

注意:在 HTML5 目标平台上,垃圾回收由 JavaScript 引擎处理,因此,如果在该平台上使用此函数,则上述结构中的成员变量都将返回 0。

使用此函数时,请注意,显示的对象信息仅在完整生成处理完毕后才会更新,这可能需要几帧时间,具体取决于帧时间设置(有关帧时序的更多信息,请参阅here)。

 

语法:

gc_get_stats();

 

返回:

GC 统计结构

 

例子:

if (global.debug == true)
{
    var _s = gc_get_stats();
    var _t = _s.traversal_time;
    var _c = _s.collection_time;
    show_debug_message("Traversal time = " + string(_t))
    show_debug_message("Collection time = " + string(_c))
}

上面的代码检查一个全局变量,如果它是true,它将从 garabge 收集器获取信息并将其作为调试消息输出到控制台。