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) 

Кто есть какие-либо идеи, почему Grizzly так ... гммм .. есть?

Спасибо!

+0

Все это происходит на сервере Glassfish V2.1.1. – Yon

ответ

0

Эти буферы используются для чтения/записи с канала. Буфер чтения по умолчанию имеет 8192 байта. Есть выходной буфер, размер которого по умолчанию равен 16x. Эти размеры настраиваются на основе ваших потребностей, но в целом были довольно приличными значениями по умолчанию за эти годы.

Смежные вопросы