Node通过--expose-gc进行手动内存回收,它是采用什么方式?
发布于 8 年前 作者 rongwj 10296 次浏览 来自 问答

指定–expose-gc参数后 通过global.gc()触发的是Scavenge算法回收内存,还是Mark-Sweep & Mark-Compact,或者根据不同的情况,选择不同的算法。

6 回复

静观其变 自豪地采用 CNodeJS ionic

void GCExtension::GC(const v8::FunctionCallbackInfo<v8::Value>& args) {
  args.GetIsolate()->RequestGarbageCollectionForTesting(
      args[0]
              ->BooleanValue(args.GetIsolate()->GetCurrentContext())
              .FromMaybe(false)
          ? v8::Isolate::kMinorGarbageCollection
          : v8::Isolate::kFullGarbageCollection);
}

根据传参,默认是 minor gc。

@yjhjstz 谢谢,有什么方法可以改变吗?

默认是 false, 试试传 true, 目前是不推荐使用, 如果有内存压力,还是要找到是否有泄露,或者找到内存占用情况。

回到顶部