CNode

Node通过--expose-gc进行手动内存回收,它是采用什么方式?

问答
Rrongwj发布于10 年前最后回复10 年前6 回复11453 浏览0 收藏

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

查看回复

回复 (6)

C
captainblue2013#1·10 年前

静观其变 自豪地采用 CNodeJS ionic

A
alsotang#2·10 年前

@JacksonTian

I
im-here#3·10 年前

坐等

Y
yjhjstz#4·10 年前
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。

Y
yjhjstz#5·10 年前

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

R
rongwj#6·10 年前

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

参与回复
登录后即可参与回复。登录