我遇到了一个问题,似乎与Python和PyV8的垃圾回收方式有关。我通过禁用Python的垃圾回收,并在没有运行JavaScript时每隔几秒钟同时调用gc.collect
和PyV8.JSEngine.collect
来解决了这个问题。然而,这似乎是一种不太正规的解决方法...特别是,我担心PyV8
可能会在不合适的时间进行收集并引起问题。是否有任何方法可以彻底禁用PyV8的自动垃圾回收,至少在我有几天时间来弄清楚到底出了什么问题并实际修复它之前?
我遇到了一个问题,似乎与Python和PyV8的垃圾回收方式有关。我通过禁用Python的垃圾回收,并在没有运行JavaScript时每隔几秒钟同时调用gc.collect
和PyV8.JSEngine.collect
来解决了这个问题。然而,这似乎是一种不太正规的解决方法...特别是,我担心PyV8
可能会在不合适的时间进行收集并引起问题。是否有任何方法可以彻底禁用PyV8的自动垃圾回收,至少在我有几天时间来弄清楚到底出了什么问题并实际修复它之前?
通过更改V8源代码,可以永久禁用垃圾回收。
在V8的源代码中,编辑src/heap.cc,在Heap::CollectGarbage的开头放置一个return语句。
除此之外,似乎不可能做到:当内存即将耗尽时,V8总是会调用垃圾回收。没有(可配置的)方法可以使其不这样做。
make x64.debug -j9 snapshot=off
- Vladislav Ivanishin