간단한 서버에는 메모리와 가비지에 대한 고려가 전혀되지 않았다.
//SelectionKey로 부터 소켓채널을 얻어온다.
SocketChannel sc = (SocketChaanel) key.channel();
//bytebuffer를 생성한다.
ByteBuffer buffer = ByteBuffer.alloocateDirect(1024);
//사용후
clearBuffer(buffer);
매번 ByteBuffer 가비지를 생성하는것을 막기위해 ByteBufferPool을 사용하면
아주 효율적으로 메모리를 재사용할 수 있다.
클라이언트가 100byte 메세지를 보냈는데 1Byte만 왔다면 기존 처리방법은
- Selector의 select()메소드 호출되고 isAcceptable(), isReadable() 메소드가 호출
- read이벤트므로 클라이언트가 보낸메세지를 읽는데 1byte때문에 이러한 행위를 두번거쳐서 읽게된다.
우와아