PyV8禁用自动垃圾回收机制

4

我遇到了一个问题,似乎与Python和PyV8的垃圾回收方式有关。我通过禁用Python的垃圾回收,并在没有运行JavaScript时每隔几秒钟同时调用gc.collectPyV8.JSEngine.collect来解决了这个问题。然而,这似乎是一种不太正规的解决方法...特别是,我担心PyV8可能会在不合适的时间进行收集并引起问题。是否有任何方法可以彻底禁用PyV8的自动垃圾回收,至少在我有几天时间来弄清楚到底出了什么问题并实际修复它之前?


你遇到了一个问题...但是问题是什么? - user2357112
问题在于JavaScript代码会随机停止执行。它曾经会出现段错误,但在我进行了上述修复后,不再出现段错误。然而有时候JavaScript代码就是不运行。 - Claudiu
这个问题与赏金无关,赏金将授予那些能够解决如何征服V8垃圾回收的人。 - Claudiu
1个回答

4

通过更改V8源代码,可以永久禁用垃圾回收。

在V8的源代码中,编辑src/heap.cc,在Heap::CollectGarbage的开头放置一个return语句。

除此之外,似乎不可能做到:当内存即将耗尽时,V8总是会调用垃圾回收。没有(可配置的)方法可以使其不这样做。


啊,我就在想是不是这样。看来我得自己打补丁来实现我想要的功能...感谢你提供了一个很好的起点! - Claudiu
为了使其正常工作,我必须禁用快照功能,像这样: make x64.debug -j9 snapshot=off - Vladislav Ivanishin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接