Java ByteBuffer
자바 NIO ByteBuffer는 바이트 데이터를 저장하고 읽는 저장소
내부 배열을 3가지 속성으로 관리한다.
(1)Capacity : 버퍼에 저장하는 최대 크기
(2)Position : 읽기 또는 쓰기가 작업 중인 위치
(3)Limit : 읽고 쓰는 버퍼의 최대 공간
생성에는 3가지 특징 : allocate , allocateDirect, wrap
(1)Allocate : jvm heap 영역에 생성.
(2)AllocateDirect : 운영체제의 커널 영역에 생성. ByteBuffer로만 생성할 수 있음.
(3)Wrap : 입력된 바이트 배열을 사용하여 바이트 버퍼를 생성.
Netty ByteBuf
Pure Java에서 Buffer와 그 하위 클래스들을 제공함에도 불구하고 네티에서는 자체적인 바이트 버퍼 API를 사용
특징
• 별도의 읽기 인덱스와 쓰기 인덱스
• flip 메서드 없이 읽기 쓰기 가능
• 가변 바이트 버퍼
• 프레임워크 레벨의 바이트 버퍼 풀 제공
• Java ByteBuffer와 호환됨
• 자료형에 따른 클래스를 제공하지 않고 별도의 method로 제공
Byte Buffer Pool
네티의 바이트버퍼의 특징은 바이트버퍼풀을 제공한다는 것이다. 이를 통해 생성된 바이트 버퍼를 재사용 할 수 있다.
• 다음은 풀링을 할 수 있는 버퍼를 생성하는 방법이다.
PooledByteBufAllocator.DEFAULT.heapBuffer()
PooledByteBufAllocator.DEFAULT.directBuffer()
• 풀링을 하지 않는 버퍼 생성 방법.
Unpooled.buffer();
Unpooled.directBuffer();
바이트 버퍼 풀을 통해 매번 ByteBuf 메모리의 할당과 해제를 하지 않아도 됨.
'Framework > Netty' 카테고리의 다른 글
#NettyFramework - Echo Server, Client 구현 (0) | 2018.06.19 |
---|---|
#Nettty Framework - Codec 종류 및 사용 (0) | 2018.05.21 |
#Nettty Framework - ChannelFutureListener (0) | 2018.05.09 |
#Nettty Framework - 채널 파이프라인 및 코덱 (0) | 2018.05.09 |
#Nettty Framework - 이벤트 모델 (0) | 2018.04.20 |