[ 
https://issues.apache.org/jira/browse/ARTEMIS-1223?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16053635#comment-16053635
 ] 

Francesco Nigro commented on ARTEMIS-1223:
------------------------------------------

[~eduda] It is something that could happen only on tests.
The TimedBuffer allocates space off JVM heap and is allocated only one time in 
the whole lifetime of a broker.
During the tests there are multiple allocations/deallocations of it and it 
generates some problem depending on how the JVM's GC handle the native 
deallocations using the ByteBuffer Cleaner.
My proposal would be to let just the tests allocates it on heap, but is 
important to not makes it always in that way because it is faster than the 
previous one partially due to its off heap allocation.

> OutOfDirectMemoryError raised from TimedBuffer
> ----------------------------------------------
>
>                 Key: ARTEMIS-1223
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1223
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 1.5.5, 2.1.0
>         Environment: IBM JDK
> java version "1.8.0"
> Java(TM) SE Runtime Environment (build pxa6480sr3fp20-20161019_02(SR3 FP20))
> IBM J9 VM (build 2.8, JRE 1.8.0 Linux amd64-64 Compressed References 
> 20161013_322271 (JIT enabled, AOT enabled)
> J9VM - R28_Java8_SR3_20161013_1635_B322271
> JIT  - tr.r14.java.green_20161011_125790
> GC   - R28_Java8_SR3_20161013_1635_B322271_CMPRSS
> J9CL - 20161013_322271)
> JCL - 20161018_01 based on Oracle jdk8u111-b14
>            Reporter: Erich Duda
>
> I see a lot of OutOfDirectMemoryError \[1\] in Artemis test suite when it 
> runs on IBM JDK. I don't see it with Oracle or OpenJDK.
> For reproducing the issue run {{LargeMessageCompressTest}} on IBM JDK.
> \[1\]
> {code}
> io.netty.util.internal.OutOfDirectMemoryError: failed to allocate 501760 
> byte(s) of direct memory (used: 66876815, max: 67108864)
>         at 
> io.netty.util.internal.PlatformDependent.incrementMemoryCounter(PlatformDependent.java:585)
>         at 
> io.netty.util.internal.PlatformDependent.allocateDirectNoCleaner(PlatformDependent.java:539)
>         at 
> io.netty.buffer.UnpooledUnsafeNoCleanerDirectByteBuf.allocateDirect(UnpooledUnsafeNoCleanerDirectByteBuf.java:30)
>         at 
> io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeNoCleanerDirectByteBuf.allocateDirect(UnpooledByteBufAllocator.java:169)
>         at 
> io.netty.buffer.UnpooledUnsafeDirectByteBuf.<init>(UnpooledUnsafeDirectByteBuf.java:68)
>         at 
> io.netty.buffer.UnpooledUnsafeNoCleanerDirectByteBuf.<init>(UnpooledUnsafeNoCleanerDirectByteBuf.java:25)
>         at 
> io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeNoCleanerDirectByteBuf.<init>(UnpooledByteBufAllocator.java:164)
>         at 
> io.netty.buffer.UnpooledByteBufAllocator.newDirectBuffer(UnpooledByteBufAllocator.java:73)
>         at 
> io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:181)
>         at io.netty.buffer.Unpooled.directBuffer(Unpooled.java:145)
>         at 
> org.apache.activemq.artemis.core.io.buffer.TimedBuffer.<init>(TimedBuffer.java:103)
>         at 
> org.apache.activemq.artemis.core.io.AbstractSequentialFileFactory.<init>(AbstractSequentialFileFactory.java:78)
>         at 
> org.apache.activemq.artemis.core.io.aio.AIOSequentialFileFactory.<init>(AIOSequentialFileFactory.java:78)
>         at 
> org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageManager.init(JournalStorageManager.java:136)
>         at 
> org.apache.activemq.artemis.core.persistence.impl.journal.AbstractJournalStorageManager.<init>(AbstractJournalStorageManager.java:217)
>         at 
> org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageManager.<init>(JournalStorageManager.java:103)
>         at 
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.createStorageManager(ActiveMQServerImpl.java:2014)
>         at 
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.initialisePart1(ActiveMQServerImpl.java:2151)
>         at 
> org.apache.activemq.artemis.core.server.impl.LiveOnlyActivation.run(LiveOnlyActivation.java:63)
>         at 
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.internalStart(ActiveMQServerImpl.java:517)
>         at 
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.start(ActiveMQServerImpl.java:465)
>         at 
> org.apache.activemq.artemis.tests.integration.client.LargeMessageCompressTest.testLargeMessageCompression3(LargeMessageCompressTest.java:171)
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to