본문 바로가기
카테고리 없음

NodeJS GC

by xladmt 2023. 9. 26.

GC(Garbage Collection)

가비지 컬렉션은 프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 것이다. 자바스크립트는 두 개의 가비지 콜렉션 방법을 사용한다.

 

1. Reference-counting

레퍼런스 카운팅은 파일, 소켓, 메모리 슬롯 등 할당된 각 리소스를 가리키는 참조의 수를 계산한다.

 

객체를 참조하는 변수는 처음에는 특정 메모리에 대해 하나 뿐이지만, 변수의 레퍼런스가 복사될 때마다 레퍼런스 카운트가 늘어난다. 객체를 참조하고 있던 변수의 값이 바뀌거나, 변수 스코프를 벗어나면 레퍼런스 카운트는 줄어든다. 레퍼런스 카운드가 0이 되면, 그 객체와 관련한 메모리는 비울 수 있다.

 

2. Tracing

한 객체에 flag를 두고, 가비지 컬렉션 사이클마다 flag 표시 후 삭제하는 mark and sweep 방법이다. 객체에 in-use flag를 두고, 사이클마다 메모리 관리자가 모든 객체를 추적해서 사용중인지 아닌지를 표시한다. 그 후 표시되지 않은 객체를 삭제하는 단계를 통해 메모리를 해제한다.

Mark and Sweep

  • Mark 
    객체가 생성될 때마다 mark bit 0 (false)로 설정되어진다. Mark 단계에서 모든 접근 가능한 객체의 mark bit가 1(true)로 설정되어진다.
  • Sweep
    Mark 단계 후에 mark bit가 여전히 0 (false)로 설정된 객체들은 도달할 수 없는 객체이므로 가비지 콜렉터가 수집해 메모리에서 해제된다.

 

[참고]

https://velog.io/@tastestar/Node.js-GC

 

Node.js GC

가비지 컬렉션은 프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 것입니다.자바스크립트는 두 개의 가비지 콜렉션 방법을 사용합니다.한 객체를 참조하는 변수의 수슬 추적

velog.io

https://blog.siner.io/2021/12/26/garbage-collection/

 

가비지컬렉션(Garbage Collection)의 종류와 특징

Garbage란? Garbage는 컴퓨터의 메모리에 있지만 앞으로 사용되지 않을 데이터나 객체 또는 메모리 영역을 가리킵니다. 모든 컴퓨터 시스템은 제한적인 메모리를 가지고 있고, 대부분의 소프트웨어

blog.siner.io

https://yceffort.kr/2020/12/javascript-garbage-collection

 

자바스크립트의 가비지 컬렉션

가비지 컬렉션은 모든 언어에서 굉장히 중요한 프로세스다. C와 같은 언어에서 수동으로 처리하고, 다른 언어에서는 이를 자동으로 처리한다. 이를 자바스크립트 내부에서는 어떻게 처리할까?

yceffort.kr

https://hyunjun19.github.io/2018/02/19/node-js-at-scale-node-js-garbage-collection/

 

Node.js의 GC는 어떻게 동작하는가?

Node.js의 GC는 어떻게 동작하는가? 2018-02-19 이 글은 RisingStack의 Node.js at scale 시리즈 중에서 Node.js Garbage Collection Explained 글을 번역한 글입니다. (저자에게 댓글로 허락을 구하긴 했는데 아직 답변이

hyunjun19.github.io

https://ui.toast.com/weekly-pick/ko_20200228

 

V8 엔진(자바스크립트, NodeJS, Deno, WebAssembly) 내부의 메모리 관리 시각화하기

이번 장에서는 NodeJS, Deno와 Electron과 같은 런타임 및 Chrome, Chromium, Brave, Opera, Microsoft Edge와 같은 웹 브라우저에서 사용되는 ECMAScript와 WebAssembly를 위한 V8 엔진의 메모리 관리 방법에 대해 살펴볼

ui.toast.com