2011-05-03 4 views
5

Node.JS 또는 V8에서 많은 HTML 페이지를 jqueryify하는 프로세스를 재사용 할 수 없게되는 메모리 누수가 있습니다.컨텍스트를 파괴 할 수 있습니까?

버그는 여기에 있습니다 : https://github.com/joyent/node/issues/1007

버그 한편, 그것은 내가 그것으로 수행하고 때 상황을 "파괴"할 수 있습니까? 이 같은 솔기가 jsdom 코드에 간단한 해킹을 할 수 있으므로 재시작을 작성하지 않고 논리적 인 방법으로 내 자신의 코드를 작성할 수 있습니다.

오픈 소스 프로젝트에 대한 우리 회사의 개조를 추적하여 업데이트를 가져올 수 있고 오픈 소스 커뮤니티를 기다리지 않고도 발견 한 버그를 수정할 수 있습니다.

나는 상황을 파괴 할 수 있다면, 나는 잘 갈 것이라고 생각한다.

jsdom의 tmpvar는 이것이 Node.JS 문제라고 말하며 이것이 몇 달 전의 것으로보고 이미 공개 된 많은 문제가 있기 때문에 수정 될시기를 알지 못합니다. https://github.com/joyent/node/issues/637.

+0

이봐 조지, 임 메모리 누수를 해결하기 위해 무엇을하고, 나는 각 JSDOM 인스턴스의 어마 어마한 해킹을 자식 프로세스를 만드는거야하지만이 일을한다는 것입니다. 네가 할 수있는 또 다른 일은 부모 프로세스가 자식의 프로세스 메모리를 감시하고 특정 제한에 도달하면 다시 시작하도록한다. –

+0

@Amjad : 감사합니다. 이미 비슷한 작업을하고 있습니다. 프로세스를 다시 시작하기 전에 구문 분석 할 수있는 페이지 수를 제한하고 있습니다. –

답변

1

내가 생각할 수있는 가장 좋은 방법은 node VM 것을 사용하는 것입니다.

원하는대로 반환 된 컨텍스트에 대한 액세스 권한을 얻을 수 있으므로 vm.runInNewContext가 유용 할 수 있습니다.

var util = require('util'), 
    vm = require('vm'), 
    sandbox = { 
     animal: 'cat', 
     count: 2 
    }; 

vm.runInNewContext('count += 1; name = "kitty"', sandbox, 'myfile.vm'); 
console.log(util.inspect(sandbox)); 
관련 문제