2011-03-14 3 views
0

응용 프로그램의 메모리로드를 줄이기위한 노력의 일환으로 hprof 보고서를 수집했습니다.Java의 Grizzly가 버퍼 용 메모리를 많이 차지합니까?

 
      percent   live   alloc'ed stack class 
rank self accum  bytes objs  bytes objs trace name 
    1 9.42% 9.42% 57414792 219 57414792 219 373093 byte[] 
    2 6.45% 15.87% 39328800 300 39328800 300 367689 byte[] 
    8 1.74% 30.92% 10618776 81 39328800 300 367958 byte[] 

대응 흔적은 다음과 같습니다 :

 
TRACE 373093: 
    java.nio.HeapByteBuffer.(HeapByteBuffer.java:39) 
    java.nio.ByteBuffer.allocate(ByteBuffer.java:312) 
    com.sun.enterprise.web.connector.grizzly.SocketChannelOutputBuffer.realWriteBytes(SocketChannelOutputBuffer.java:153) 
    com.sun.enterprise.web.connector.grizzly.SocketChannelOutputBuffer$NIOOutputStream.write(SocketChannelOutputBuffer.java:240) 

TRACE 367689: 
    java.nio.HeapByteBuffer.(HeapByteBuffer.java:39) 
    java.nio.ByteBuffer.allocate(ByteBuffer.java:312) 
    com.sun.enterprise.web.connector.grizzly.SocketChannelOutputBuffer.(SocketChannelOutputBuffer.java:100) 
    com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.initialize(DefaultProcessorTask.java:436) 

TRACE 367958: 
    java.nio.HeapByteBuffer.(HeapByteBuffer.java:39) 
    java.nio.ByteBuffer.allocate(ByteBuffer.java:312) 
    com.sun.enterprise.web.connector.grizzly.SocketChannelOutputBuffer.(SocketChannelOutputBuffer.java:100) 
    com.sun.enterprise.web.connector.grizzly.ssl.SSLOutputBuffer.(SSLOutputBuffer.java:59) 

누구나 그리즐리 .. uhmm ... 너무 배가 왜 어떤 아이디어를 가지고 보고서에는 다음이 포함?

감사합니다.

+0

이 문제는 모두 Glassfish V2.1.1 서버에서 발생합니다. – Yon

답변

0

이러한 버퍼는 채널에서 읽고 쓰는데 사용됩니다. 읽기 버퍼는 기본적으로 8192 바이트입니다. 기본 크기가 16x 인 출력 버퍼가 있습니다. 이러한 크기는 필요에 따라 조정할 수 있지만 일반적으로 지난 몇 년 동안 꽤 괜찮은 기본값이었습니다.