자바 I/O & NIO 네트워크 정리 16 : 향상된 서버 만들기

0

2. 🧇 효율적인 메모리 사용

간단한 서버에는 메모리와 가비지에 대한 고려가 전혀되지 않았다.

//SelectionKey로 부터 소켓채널을 얻어온다.
SocketChannel sc = (SocketChaanel) key.channel();
//bytebuffer를 생성한다.
ByteBuffer buffer = ByteBuffer.alloocateDirect(1024);


//사용후

clearBuffer(buffer);
   

매번 ByteBuffer 가비지를 생성하는것을 막기위해 ByteBufferPool을 사용하면
아주 효율적으로 메모리를 재사용할 수 있다.

3. 🥞 비효율적인 데이터 전송 고려

클라이언트가 100byte 메세지를 보냈는데 1Byte만 왔다면 기존 처리방법은

  1. Selector의 select()메소드 호출되고 isAcceptable(), isReadable() 메소드가 호출
  2. read이벤트므로 클라이언트가 보낸메세지를 읽는데 1byte때문에 이러한 행위를 두번거쳐서 읽게된다.

4. 🧈 동시성을 이용한 성능 극대화

profile
쉽게 가르칠수 있도록 노력하자

1개의 댓글

comment-user-thumbnail
2021년 6월 25일

우와아

답글 달기