Netty를 통해 JVM 옵션을 여러가지 설정 할 수 있지만 핵심이라고 생각하는 4가지만 정리하였다.
1) 메모리 leak 검출
java -Dio.netty.leakDetection.level=advanced ...
DISABLED |
메모리 릭 감지를 비활성화 |
SIMPLE |
디폴트 설정이며 버퍼의 1%의 누출이 있는지 나타낸다. |
ADVANCED |
누출된 버퍼의 액세스 위치를 나타낸다. |
PARANOID |
모든 단일 버퍼라는 점을 제외하면 advanced와 동일. leak 검출 시 빌드가 실패 될 수 있다. |
2) DirectBuffer 선호 여부
java -Dio.netty.noPreferDirect=true ...
noPreferDirect 옵션은 netty는 ByteBufAllocator.buffer(..) 메소드가 호출 될 때, direct buffer는 선호되지 않는다고 개발자에게 알려준다. 그렇다고 해서 . ByteBufAllocator.directBuffer(...)가 직접적으로 directBuffer를 호출할 때 Direct Buffer가 사용되지 않는 것은 아니다. 여전히 사용 중이다.
3) ByteBuf allocator의 풀링 타입
java -Dio.netty.allocator.type=unpooled ...
풀링 여부에는 pooled / unpooled 가 존재한다. 여기서 말하는 풀은 DBCP의 Connection Pool 혹은 Thread Excutor의 Thread Pool과 같은 맥락이다.
즉, ByteBuf의 레퍼런스 카운트와 같은 자원관리를 Pool이 관리할 것이냐 아니면 unpooled 함으로 써 ByteBufAllocator에서 직접 얻어 올 것이냐로 나뉠 수 있다.
4) sun.misc.Unsafe의 사용을 중지하도록 허용
java -Dio.netty.tryUnsafe=false ...
Java 9 이상에서 sun.misc.unsafe 기능이 활성화 됨에 따라 NETTY에서 WARN 및 ERROR를 발생할 만한 요소가 있는데, unsafe 옵션을 비활성화 함으로써 사용을 중지 할 수 있다.
https://github.com/netty/netty/issues/272
'Framework > Netty' 카테고리의 다른 글
Netty HttpClient Example Code (0) | 2018.08.04 |
---|---|
#NettyFramework - Echo Server, Client 구현 (0) | 2018.06.19 |
#Nettty Framework - Codec 종류 및 사용 (0) | 2018.05.21 |
#Nettty Framework - ByteBuffer, ByteBuf (0) | 2018.05.09 |
#Nettty Framework - ChannelFutureListener (0) | 2018.05.09 |