У меня возникла проблема, которая, как представляется, связана с тем, как Python & взаимодействует с мусорным контейнером PyV8. Я временно решил проблему, отключив сбор мусора python и позвонив gc.collect
и PyV8.JSEngine.collect
каждые несколько секунд, когда JavaScript не запускается. Однако это похоже на довольно хакерское решение ... в частности, я волнуюсь PyV8
может решить собрать в неподходящее время и вызвать проблемы, во всяком случае. Есть ли способ отключить автоматическую сборку мусора PyV8 навсегда, по крайней мере, пока у меня не будет нескольких дней, чтобы потратить на то, чтобы выяснить, что происходит, и тем самым исправить проблему?PyV8 отключить автоматическую сборку мусора
ответ
Можно отключить сборку мусора навсегда, изменив исходный код V8.
В источнике V8 отредактируйте файл src/heap.cc и поместите оператор return в начале кучи :: CollectGarbage.
Кроме этого, это невозможно (AFAICT): V8 всегда будет вызывать сборку мусора, когда у него закончится нехватка памяти. Нет (настраиваемый) способ не делать это.
А я подумал, не так ли. Кажется, я должен был бы исправить ее сам, чтобы реализовать то, что я хочу ... спасибо за то, что она послужила хорошей отправной точкой для этого! – Claudiu
Для этого мне пришлось отключить моментальный снимок, например: 'make x64.debug -j9 snapshot = off' –
У вас проблема ... но в чем проблема? – user2357112
проблема заключается в том, что javascript-код будет случайным образом прекращать выполнение. это использовалось для segfault, но после того, как я сделал исправление, он больше не segfaults .. однако иногда JavaScript просто не запускается. – Claudiu
вопрос не имеет значения для щедрости, щедрость пойдёт тому, кто выясняет, как победить сборку мусора V8 – Claudiu