【问题标题】:v8 | manually initiate the garbage collectorv8 |手动启动垃圾收集器
【发布时间】:2012-05-23 12:31:04
【问题描述】:

有没有办法在 Google 的 V8 引擎上手动启动垃圾收集器?我找不到任何参考。通常 GC 都支持这个功能。

【问题讨论】:

    标签: c++ garbage-collection v8


    【解决方案1】:
    • 您可以将 v8::HEAP->CollectAllGarbage 函数公开给 通过命令标志 --expose_gc 的全局 JavaScript 命名空间。然后 只需致电gc();

    • 您可以通过以下语句强制从 C++ 进行垃圾回收:

      while(!V8::IdleNotification()) {};

    参考资料:

    【讨论】:

    【解决方案2】:

    使用 V8::AdjustAmountOfExternalAllocatedMemory

    http://create.tpsitulsa.com/wiki/V8/Garbage_Collection

    【讨论】:

    • 不完全是我想要的,但足够接近。谢谢。
    • @RoeeGavirel 当您找到更好的答案并且不接受错误答案时,更好地回答您自己的问题。
    • 链接已失效,并且该函数或字段似乎不再存在 v8.paulfryzel.com/docs/master/classv8_1_1_v8.html 它现在处于隔离状态:v8.paulfryzel.com/docs/master/classv8_1_1_isolate.html
    • v8 命名空间中曾经是全局的所有内容都已移至隔离,因为每个隔离都是独立的。隔离->AdjustAmountOfExternalAllocatedMemory 是新函数,您可以使用它来调整 v8 认为用于支持它所知道的对象的内存量。当你为 v8 创建一个 c++ 对象时,通常需要传入 sizeof(CppObjectType),而当你删除 c++ 对象时,传入 -sizeof(CppObjectType)。对于测试,您可以简单地告诉 v8 每个对象都使用大量内存,并且它会更积极地进行垃圾收集
    猜你喜欢
    • 1970-01-01
    • 2019-11-12
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多