2016-10-26 3 views
1

다음은 내 코드입니다. Netty Unpooled.directBuffer.do를 사용했는데 메모리를 명시 적으로 할당 해제해야하거나 netty를 사용합니까?Netty 직접 버퍼 메모리가 어떻게 할당 및 할당 해제 되었습니까?

public ByteBuf Payload() { 
    int totalLength=0; 
    for(ByteBuf byteBuf:payload){ 
     totalLength+=byteBuf.readableBytes(); 
    } 
**ByteBuf byteBuf= Unpooled.directBuffer(totalLength,totalLength+10);** 
    for(ByteBuf byteBuf1:payload){ 
     byteBuf.writeBytes(byteBuf1); 
    } 
    System.out.println("content :"+byteBuf.readableBytes()); 
    return byteBuf; 
} 

답변

1

나가는 파이프 라인에 따라 다릅니다. 일반적으로 직접 버퍼를 명시 적으로 해제해야합니다. 그러나 버퍼를 해제하는 Outbound Handler가 파이프 라인에 이미있는 경우에는 그렇게 할 필요가 없습니다. 예를 들어 파이프 라인에 MessageToByteEncoder 핸들러 또는 하위 클래스가있는 경우 버퍼를 명시 적으로 해제 할 필요가 없습니다. 대부분의 경우 기본 HTTP, 웹 소켓, MQTT 핸들러를 사용하는 경우 직접 버퍼를 해제 할 필요가 없습니다.

관련 문제