2014-09-03 3 views
0

Express 애플리케이션에 매우 간단한 업로드 양식이 있습니다. 양식을받는 코드가 제출nodejs/express의 파일 업로드시 메모리 누수가 발생했습니다.

은 같다 :

app.post('/import', function(req, res) { 
    res.render('import-complete'); 
}); 

내가 노드 프로세스에 의해 사용되는 메모리 60MB의이 노드 서버를 시작합니다. 양식을 제출하면 파일이 업로드되고 (250MB) 메모리 사용량이 증가하고 ~ 300MB에 도달합니다. 업로드가 끝나면 메모리 사용량은 "계속 내리지 않고"300MB 정도 남아 있습니다.

따라서 "app.post"에는 메모리 누수의 원인이 될 수있는 코드가 없습니다. 무슨 일이야?

+0

메모리가 더 제출로 계속 증가합니까? 또한, 어떤 미들웨어가 활성화되어 있습니까? – sheldonk

+0

아니요, 더 업로드하면 메모리가 증가하지 않습니다. 미들웨어 없음 –

+0

어떻게 메모리 증가를 모니터링하고 있습니까? Ubuntu의 시스템 모니터가 설치된 – sheldonk

답변

2

노드 프로세스에서 수신하는 할당 된 가상 메모리를보고있을 것입니다. 250MB 파일을 메모리에로드하기 때문에 노드 프로세스에는 300MB의 메모리가 할당되지만 나중에 실제 사용량은 훨씬 적습니다. 해당 파일의 메모리는 라우트가 처리 된 후 비교적 빨리 가비지 수집되지만 프로세스를 사용하지 않더라도 프로세스는 여전히 그 할당을가집니다. 실제 메모리보다 더 많은 가상 메모리를 할당 할 수 있습니다. 메모리 누수가있는 경우 지속적으로 더 많은 파일을 사용하여 해당 경로에 도달하면 가상 메모리가 증가합니다.

당신은 가상 메모리 참조를 위해이 문제를 확인하실 수 있습니다 : What are the differences between virtual memory and physical memory?

관련 문제