2013-06-09 1 views
4

У меня возникла проблема, которая, как представляется, связана с тем, как Python & взаимодействует с мусорным контейнером PyV8. Я временно решил проблему, отключив сбор мусора python и позвонив gc.collect и PyV8.JSEngine.collect каждые несколько секунд, когда JavaScript не запускается. Однако это похоже на довольно хакерское решение ... в частности, я волнуюсь PyV8 может решить собрать в неподходящее время и вызвать проблемы, во всяком случае. Есть ли способ отключить автоматическую сборку мусора PyV8 навсегда, по крайней мере, пока у меня не будет нескольких дней, чтобы потратить на то, чтобы выяснить, что происходит, и тем самым исправить проблему?PyV8 отключить автоматическую сборку мусора

+0

У вас проблема ... но в чем проблема? – user2357112

+0

проблема заключается в том, что javascript-код будет случайным образом прекращать выполнение. это использовалось для segfault, но после того, как я сделал исправление, он больше не segfaults .. однако иногда JavaScript просто не запускается. – Claudiu

+0

вопрос не имеет значения для щедрости, щедрость пойдёт тому, кто выясняет, как победить сборку мусора V8 – Claudiu

ответ

4

Можно отключить сборку мусора навсегда, изменив исходный код V8.

В источнике V8 отредактируйте файл src/heap.cc и поместите оператор return в начале кучи :: CollectGarbage.

Кроме этого, это невозможно (AFAICT): V8 всегда будет вызывать сборку мусора, когда у него закончится нехватка памяти. Нет (настраиваемый) способ не делать это.

+0

А я подумал, не так ли. Кажется, я должен был бы исправить ее сам, чтобы реализовать то, что я хочу ... спасибо за то, что она послужила хорошей отправной точкой для этого! – Claudiu

+0

Для этого мне пришлось отключить моментальный снимок, например: 'make x64.debug -j9 snapshot = off' –