Status fields:
creation_ts: | 2008-03-25 08:06 |
---|---|
component: | vm |
version: | default branch |
rep_platform: | All |
op_sys: | Linux |
bug_status: | RESOLVED |
resolution: | LATER |
reporter: | twisti@complang.tuwien.ac.at |
This happens with IcedTea6 b06 after running some hours. DEBUG::Tue Mar 25 00:04:42 CET 2008::org.gudy.azureus2.core3.util.DirectByteBufferPool::allocateNewBuffer::206: Memory allocation failed: Out of direct memory space. To fix: Use the -XX:MaxDirectMemorySize=512m command line option, or upgrade your Java JRE to version 1.4.2_05 or 1.5 series or newer. DirectByteBufferPool::getBufferHelper::287,DirectByteBufferPool::getBuffer::237,BTMe ssageDecoder::postReadProcess::363,BTMessageDecoder::performStreamDecode::108,IncomingMe ssageQueueImpl::receiveFromTransport::112,SinglePeerDownloader::doProcessing::76,ReadCon troller::doRead::293,ReadController::doNormalPriorityRead::247,ReadController::readProce ssorLoop::228,ReadController::access$200::43,ReadController$2::runSupport::88,AEThread:: run::71 [alert] Alert:3:Memory allocation failed: Out of direct memory space. To fix: Use the -XX:MaxDirectMemorySize=512m command line option, or upgrade your Java JRE to version 1.4.2_05 or 1.5 series or newer. DEBUG::Tue Mar 25 00:04:42 CET 2008::com.aelitis.azureus.core.networkmanager.impl.Single PeerDownloader::doProcessing::97: java.lang.OutOfMemoryError: Direct buffer memory at java.nio.Bits.reserveMemory(Bits.java:656) at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:113) at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:305) at org.gudy.azureus2.core3.util.DirectByteBufferPool.allocateNewBuffer(DirectByt eBufferPool.java:199) at org.gudy.azureus2.core3.util.DirectByteBufferPool.getBufferHelper(DirectByteB ufferPool.java:287) at org.gudy.azureus2.core3.util.DirectByteBufferPool.getBuffer(DirectByteBufferP ool.java:237) at com.aelitis.azureus.core.peermanager.messaging.bittorrent.BTMessageDecoder.po stReadProcess(BTMessageDecoder.java:363) at com.aelitis.azureus.core.peermanager.messaging.bittorrent.BTMessageDecoder.pe rformStreamDecode(BTMessageDecoder.java:108) at com.aelitis.azureus.core.networkmanager.impl.IncomingMessageQueueImpl.receive FromTransport(IncomingMessageQueueImpl.java:112) at com.aelitis.azureus.core.networkmanager.impl.SinglePeerDownloader.doProcessin g(SinglePeerDownloader.java:76) at com.aelitis.azureus.core.networkmanager.impl.ReadController.doRead(ReadContro ller.java:293) at com.aelitis.azureus.core.networkmanager.impl.ReadController.doNormalPriorityR ead(ReadController.java:247) at com.aelitis.azureus.core.networkmanager.impl.ReadController.readProcessorLoop (ReadController.java:228) at com.aelitis.azureus.core.networkmanager.impl.ReadController.access$200(ReadCo ntroller.java:43) at com.aelitis.azureus.core.networkmanager.impl.ReadController$2.runSupport(Read Controller.java:88) at org.gudy.azureus2.core3.util.AEThread.run(AEThread.java:71)
This changeset should fix the bug: http://mips.complang.tuwien.ac.at/hg/cacao/rev/bd1fba089d84 Will try later if it really works.
No, the OOM still happens, but later. The default maximum direct memory size is 64MB and the Azureus start script sets the maximum heap size, which is then used for the maxiumum direct memory size, to 128MB. A bug in freeing direct memory?
I guess the problem is that direct buffer cleanup requires phantom references to work (via sun.misc.Cleaner). Apparently CACAO cannot do this with Boehm.