2013-06-09 8 views
4

Python의 가비지 수집과 상호 작용하는 방식과 관련된 문제가 있습니다. & 나는 일시적으로 파이썬의 가비지 수집을 비활성화하고 JavaScript가 실행되지 않을 때 gc.collectPyV8.JSEngine.collect을 몇 초마다 함께 호출하여 문제를 해결했습니다. 그러나 이것은 꽤 해킹 된 수정처럼 보입니다 ... 특히, 나는 어쨌든 부적절한 시간에 수집하여 문제를 야기 할 수 있다고 걱정합니다. 어떤 일이 일어나고 있는지 정확히 알기 위해 며칠을 기다릴 때까지 적어도 PyV8의 자동 가비지 수집을 비활성화하는 방법이 있습니까?PyV8 자동 가비지 수집을 비활성화합니다.

+0

문제가 있습니다. 문제가 무엇인가요? – user2357112

+0

문제는 자바 스크립트 코드가 무작위로 실행을 중단한다는 것입니다. 그것은 segfault하는 데 사용하지만, 위의 수정을 한 후에는 더 이상 segfaults .. 그러나 때로는 자바 스크립트가 단순히 실행되지 않습니다. – Claudiu

+0

현상금이 현상금과 관련이 없다면, 현상금은 V8 쓰레기 수거를 정복하는 방법을 알아내는 사람에게로 돌아갑니다. – Claudiu

답변

4

V8의 소스 코드를 변경하여 가비지 수집을 해제 할 수 있습니다.

V8 소스에서 src/heap.cc를 편집하고 return 문을 Heap :: CollectGarbage의 시작 부분에 놓습니다.

그 외, 불가능합니다 (AFAICT) : V8은 메모리가 부족해지면 항상 가비지 수집을 호출합니다. 그렇게하지 않는 (구성 가능한) 방법은 없습니다.

+0

아, 그럴까 궁금해. 그것은 내가 원하는 것을 구현하기 위해 직접 패치해야 할 것 같은데 ... 좋은 출발점을 제공해 주셔서 감사합니다! – Claudiu

+0

이 작업을 수행하려면 다음과 같이 snapshotting을 비활성화해야합니다. 'make x64.debug -j9 snapshot = off' –

관련 문제