IT TIP

node.js의 가비지 수집기를 실행하도록 요청하는 방법은 무엇입니까?

itqueen 2021. 1. 7. 20:17
반응형

node.js의 가비지 수집기를 실행하도록 요청하는 방법은 무엇입니까?


시작할 때 내 node.js 앱이 약 200MB의 메모리를 사용하는 것 같습니다. 잠시 방치하면 약 9MB로 줄어 듭니다.

앱 내에서 다음을 수행 할 수 있습니까?

  1. 앱이 사용중인 메모리 양을 확인 하시겠습니까?
  2. 가비지 수집기를 실행하도록 요청 하시겠습니까?

내가 묻는 이유는 일시적으로 처리되는 디스크에서 여러 파일을로드하기 때문입니다. 이로 인해 메모리 사용량이 급증 할 수 있습니다. 그러나 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

반응형