抖音开放平台Logo
开发者文档
控制台
  • API 概览
  • 开放能力
  • 基础
  • tt.canIUse
  • 定时器
  • 分包加载
  • 更新
  • 性能
  • tt.getPerformance
  • tt.onMemoryWarning
  • tt.triggerGC
  • 调试
  • 渲染
  • 设备
  • 文件
  • 位置
  • 媒体
  • 网络
  • 游戏转发分享
  • 实时语音
  • 数据缓存
  • 系统
  • 广告
  • 界面
  • 支付
  • Worker
  • tt.triggerGC
    收藏
    我的收藏

    基础库 1.15.0 开始支持本方法,这是一个同步方法。

    加快触发 JS 引擎 Garbage Collection(垃圾回收),GC 时机是 JS 引擎控制的,并不能保证调用后马上触发 GC。

    前提条件
    业务背景
    使用限制
    注意事项
    相关教程

    语法

    tt.triggerGC()

    参数说明

    返回值

    错误码

    errorCodeerrMsgerrorType说明最低支持版本
    999993internal errorF
    小游戏框架内部错误,有需要请创建工单咨询
    1.15.0

    代码示例

    tt.triggerGC();

    GC 介绍

    内存分配的方式

    要了解 GC 是如何工作的,首先要了解内存是如果分配的,目前存在三种内存分配方式:
    分配方式
    大小
    管理方式
    分配时间
    缺点
    静态分配
    编译器决定,会比较大
    ["编译期间"]
    只能使用固定长度内存,不支持函数递归
    栈分配
    编译器决定,比较小
    自动管理
    ["运行期间"]
    大小有限,容易堆栈溢出
    堆分配
    系统决定,可以很大
    手动管理
    ["运行期间"]
    需要手动管理,容易内存泄漏
    而我们所讨论的 GC 主要是基于堆的内存管理。

    什么是 GC

    简单说,GC 就是引擎用于管理内存的一种形式,GC 会试图回收我们不再使用的对象所占用的内存。对于 GC,一般而言只有两件事需要做,找到内存空间里面的垃圾,接着回收垃圾,让程序员能够再次利用这部分空间。

    为什么需要关心 GC

    首先需要明白,你不能去控制 GC 去强制回收某块内存。GC 是一个运行时程序。
    诸如 C 这样的高级语言,提供了 malloc() 或者 free() 这样的 API 要求程序员显示的分配或者释放内存,这种手动的方式相当麻烦,而且容易出错:要是你不小心释放了正在使用中的内存,你可能就会遇到由此引发的恶性 BUG。
    而 JavaScript 是一门宽容的语言,JavaScript 是一门捆绑了 GC 的语言。
    作为初学者,你可能只想要写出能够运行正常的代码。但随着你对程序语言的深入了解,你需要去关注 GC 的运行情况,确保你声明的对象在使用完毕后能够被 GC 回收,不会造成内存泄露。
    若是你编写的程序想要以 60fps 的帧率运行,从而带来良好的用户体验,你需要去关注 GC 停顿造成的影响,这时候你可能会选择尽量避免 GC 的发生,或者减少 GC 停顿时间。