2011-08-25 3 views
43

웹의 여러 곳에서 다음과 같이 표시됩니다.Node.js (및 크롬 V8)의 메모리 한도

노드 프로세스의 메모리 제한은 얼마입니까?

하고 응답 :

현재 기본 V8 64 비트 시스템 메모리 32 비트 시스템의 512MB 한계와 1GB의 보유에 의해. 한계는 ~max-old-space-size를 최대 ~ 1GB (32 비트) 및 ~ 1.7GB (64 비트)로 설정하여 높일 수 있지만 단일 프로세스를 여러 작업자로 분할하는 것이 좋습니다 당신이 기억 한계를 치는 경우에.

node.js가 자주 업데이트하는 것으로 보이는 경우 누군가가이를 확인할 수 있습니까 ??? * 그리고 더 중요한 것은 가까운 시일 내에이 사건이 발생할 것입니까 ??? *

내가이 일을 끝낼 것, 내가 노드에서 할 수없는 경우

(문제가되지 않을 수 있으며 속도) 자바 스크립트 객체 4GB의 처리해야 할 수도 있습니다 자바 스크립트 코드를 작성하려면 자바 (64 비트 머신에서)하지만 나는 오히려하지 않을 것입니다 ...

+5

세계에서 JS 개체에서 4GB를 차지할 수있는 것은 무엇입니까? –

+23

@ dominic-barnes : 이미지. 영화 산업. 젠장, 그게 중요한거야? 뭔가 언젠가는. 예를 들면 MMORPG. 나는 한계가 잔인하다는 것에 동의하며 v8의 원본 초안에서 32 비트 정수를 사용하여 심각한 문제를 해결하는 것은 심각한 프로그래머 실수였습니다. –

+0

4GB의 데이터를 갖고 싶으면 JS 오브젝트로는 사용할 수 없습니다. 어쩌면이 링크가 도움이 될까요? https://developer.mozilla.org/en/javascript_typed_arrays – goatslacker

답변

1

사실처럼 보입니다. 버퍼에 50 Mb 문자열을 할당하려고 시도했을 때 var buf = new Buffer(50*1024*1024); 치명적인 오류 FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory이 발생했습니다. 프로세스 모니터에서 nodejs 메모리 사용량을 약 457Mb로 고정했습니다.

16

이것은 Node.js를 사용하는 일부 사람들에게 큰 관심사였으며 좋은 소식이 있습니다. V8에 대한 새로운 메모리 제한은 현재 64 비트에 대해 알려지지 않았으며 (테스트되지 않음) 32 비트 환경에서 32 비트 주소 공간까지 허용됩니다.

더 여기 읽기 : http://code.google.com/p/v8/issues/detail?id=847

+2

(64 비트조차도) 여전히 --max-old-space-size = 10000 (10GB 용) 옵션으로 더 많은 메모리를 지정해야합니다. 그렇지 않으면 "FATAL ERROR : CALL_AND_RETRY_2 할당 실패 - 메모리 부족 프로세스 "Windows의 작업 관리자에서 ~ 1.7GB의 메모리 사용량. –

+1

v7.8.0에서 8GB +를 쉽게 사용하고 있습니다 - 내 컴퓨터에 더 많은 RAM이 있기를 바랍니다. – JoeRocc

5

내가 명확한 메모리 누수와 노드 0.6.0은 기가 바이트 추진하고있다 우분투 리눅스에 지금 시저를 실행하고 있습니다. 그것이 처리된다고 생각해라 :).

-5

노드 --max-old-space-size 플래그 = chrome

+4

이것은 답변이 아닙니다. –