블로그 글 읽기) Unpacking Node.js Memory
Published at 2025-06-05
TIL
날짜: 2025년 6월 5일
블로그 글 읽기
Unpacking Node.js Memory - From Raw Bytes to Usable Data
아래 세가지 데이터 구조에 대한 글.
ArrayBuffer
TypedArray
Buffer
ArrayBuffer
- 원시값
- byte의 배열 (byte = 1bit. byte는 256가지 값 나타낼 수 있음)
- 예시)
const buffer = new ArrayBuffer(4); // 4 bytes
- 하지만 이는 메모리 덩어리일 뿐이라서 직접 읽기나 쓰기를 할 수는 없다.
- 접근하려면
TypedArray
혹은DataView
사용해야함
TypedArray
- Byte들에 의미 부여
- 말그대로 특정 타입의 배열임
- 숫자 타입에서
signed
는 -128 ~ 127,unsigned
은 0 ~ 255 - 종류)
Int8Array
- 8 bit signed integer - 1 byteUint8Array
- 8 bit unsigned integer - 1 byteInt16Array
- 16 bit signed integer - 2 bytesUint16Array
- 16 bit unsigned integer - 2 bytesInt32Array
- 32 bit signed integer - 4 bytesUint32Array
- 32 bit unsigned integer - 4 bytesFloat32Array
- 32 bit float - 4 bytesFloat64Array
- 64 bit float - 8 bytesBigInt64Array
- 64 bit signed integer - 8 bytesBigUint64Array
- 64 bit unsigned integer - 8 bytes
- 예시)
const buffer = new ArrayBuffer(4); // 4 bytes const int8Array = new Int8Array(buffer); console.log(int8Array); // Int8Array(4) [0, 0, 0, 0]
- 그래서 이게 어떤 도움이?
const buffer = new ArrayBuffer(4); // 4 bytes const int8Array = new Int8Array(buffer); const int32Array = new Int32Array(buffer); console.log(int8Array); // Int8Array(4) [0, 0, 0, 0] console.log(int32Array); // Int32Array(1) [0] // You can use TypedArray to write to the buffer int8Array[0] = 1; // [1, 0, 0, 0] int8Array[1] = 2; // [1, 2, 0, 0] int8Array[2] = 3; // [1, 2, 3, 0] int8Array[3] = 4; // [1, 2, 3, 4] console.log(int8Array); // Int8Array(4) [1, 2, 3, 4] console.log(int32Array); // Int32Array(1) [67305985]
- 위 예제를 보면 어떤 타입을 사용하느냐에 따라 같은 데이터인데 해석 방식이 달라진다.
TypedArray
는 데이터의 ‘view’만 담당할 뿐이기 때문에,TypedArray
의 데이터를 변경하면ArrayBuffer
도 같이 변경된다.
Buffer
- Node.js에서 이진 데이터 작업을 할 수 있도록 해주는 전역 객체
TypedArray
위에 구축되어 있어서TypedArray
의 모든 메서드 사용할 수 있음- Node.js에서 파일을 읽을 때
Buffer
객체를 반환받는다. Buffer
를 사용하여 대용량 파일을 청크 단위로 처리하여 메모리 관리 유용