node.js의 가비지 수집기를 실행하도록 요청하는 방법은 무엇입니까?
시작할 때 내 node.js 앱이 약 200MB의 메모리를 사용하는 것 같습니다. 잠시 방치하면 약 9MB로 줄어 듭니다.
앱 내에서 다음을 수행 할 수 있습니까?
- 앱이 사용중인 메모리 양을 확인 하시겠습니까?
- 가비지 수집기를 실행하도록 요청 하시겠습니까?
내가 묻는 이유는 일시적으로 처리되는 디스크에서 여러 파일을로드하기 때문입니다. 이로 인해 메모리 사용량이 급증 할 수 있습니다. 그러나 GC가 실행될 때까지 더 많은 파일을로드하고 싶지 않습니다. 그렇지 않으면 메모리가 부족해질 위험이 있습니다.
어떤 제안?
--expose-gc
플래그 를 사용하여 노드 프로세스를 시작하면 노드 global.gc()
가 가비지 수집을 실행하도록 강제 할 수 있습니다 . 노드 앱 내의 다른 모든 실행은 GC가 완료 될 때까지 일시 중지되므로 너무 자주 사용하지 마십시오. 그렇지 않으면 성능에 영향을줍니다.
코드 내에서 GC 호출을 할 때 확인을 포함하여 노드가 플래그없이 실행 된 경우 문제가 발생하지 않도록 할 수 있습니다.
try {
if (global.gc) {global.gc();}
} catch (e) {
console.log("`node --expose-gc index.js`");
process.exit();
}
노드를 사용하면 가비지 컬렉션을 수동으로 트리거 할 수 있습니다. 이는 --expose-gc
플래그 (예 :)와 함께 노드를 실행하여 수행 할 수 있습니다 node --expose-gc index.js
.
노드가 해당 모드에서 실행되면 언제든지 global.gc()
프로그램에서 호출하여 가비지 컬렉션을 프로그래밍 방식으로 트리거 할 수 있습니다 .
예-
// Force garbage collection every time this function is called
try {
if (global.gc) {global.gc();}
} catch (e) {
console.log("`node --expose-gc index.js`");
process.exit();
}
제가 제안하는 한 가지는 시작시 이러한 파일이 필요하지 않은 경우 필요할 때만로드하려고한다는 것입니다.
편집 : 위의 게시물을 참조하십시오.
참조 URL : https://stackoverflow.com/questions/27321997/how-to-request-the-garbage-collector-in-node-js-to-run
'IT TIP' 카테고리의 다른 글
양식 전송 오류, Flask (0) | 2021.01.07 |
---|---|
Java에서 HashMap과 Map의 차이점 ..? (0) | 2021.01.07 |
UICollectionView-동적 셀 높이? (0) | 2021.01.07 |
XML :: Simple이 권장되지 않는 이유는 무엇입니까? (0) | 2021.01.07 |
java : Rpc / 인코딩 된 wsdl은 JAXWS 2.0에서 지원되지 않습니다. (0) | 2021.01.07 |