Direct ByteBuffer VS Indirect ByteBuffer
Direct ByteBuffer
메모리 할당: Direct ByteBuffer는 운영체제의 네이티브 메모리를 사용하여 할당됩니다. 자바 힙(heap) 영역 밖에서 직접 메모리를 할당하기 때문에, 운영체제의 메모리 관리 시스템과 더 밀접하게 연동됩니다.
데이터 접근 속도: 네트워크 I/O, 파일 I/O와 같은 자바 외부 시스템과 데이터를 주고받을 때 더 빠른 속도를 제공합니다. 이는 Direct ByteBuffer가 네이티브 메모리를 사용하기 때문에 데이터 복사(copy)가 줄어들기 때문입니다.
장점: 빠른 I/O 작업, 성능 최적화.
단점: 메모리 할당 및 해제가 비교적 비쌉니다. 또한, JVM의 가비지 컬렉터가 직접 관리하지 않기 때문에 메모리 누수 가능성이 있습니다.
Indirect ByteBuffer
메모리 할당: Indirect ByteBuffer는 자바 힙(heap) 메모리를 사용하여 할당됩니다. 일반적인 자바 객체와 동일한 방식으로 메모리가 관리됩니다.
데이터 접근 속도: 자바 힙 메모리를 사용하기 때문에 메모리 접근은 빠르지만, 네트워크 I/O나 파일 I/O와 같은 외부 시스템과 상호 작용할 때는 성능이 Direct ByteBuffer보다 떨어질 수 있습니다.
장점: 메모리 할당 및 해제가 비교적 저렴하며, JVM의 가비지 컬렉터가 메모리를 관리하므로 메모리 누수 위험이 적습니다.
단점: 외부 시스템과의 I/O 작업에서 속도가 느릴 수 있습니다.
요약
Direct ByteBuffer: 네이티브 메모리를 사용하여 빠른 I/O 성능을 제공하지만, 메모리 할당 및 해제 비용이 높고 메모리 누수 위험이 있음.
Indirect ByteBuffer: 자바 힙 메모리를 사용하여 메모리 관리가 쉽고 안전하지만, 외부 시스템과의 I/O 작업에서 성능이 떨어질 수 있음.
Last updated