【问题标题】:Java's Grizzly taking up a lot of memory for buffers?Java 的 Grizzly 占用大量内存用于缓冲区?
【发布时间】:2011-03-14 17:50:07
【问题描述】:

为了减少应用程序的内存负载,我们收集了一份 hprof 报告。该报告包括以下内容:

实时分配的堆栈类百分比 rank self accum bytes objs bytes objs 跟踪名称 1 9.42% 9.42% 57414792 219 57414792 219 373093 字节[] 2 6.45% 15.87% 39328800 300 39328800 300 367689 字节[] 8 1.74% 30.92% 10618776 81 39328800 300 367958 字节[]

对应的痕迹是:

跟踪 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) 追踪 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) 追踪 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)

有人知道为什么灰熊这么……呃……饿了吗?

谢谢!

【问题讨论】:

  • 这一切都发生在 Glassfish V2.1.1 服务器上。

标签: java memory-management grizzly


【解决方案1】:

这些缓冲区用于从通道读取/写入。读取缓冲区默认为 8192 字节。有一个输出缓冲区,其默认大小是 16 倍。这些大小可以根据您的需要进行调整,但这些年来通常是相当不错的默认值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-30
    • 2013-08-17
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    相关资源
    最近更新 更多