[rabbitmq-discuss] Problem with RabbitMQ Java Client (Memory leak)
Steve Powell
steve at rabbitmq.com
Wed Feb 1 17:37:47 GMT 2012
The fix (which we have coded) will be in the next release,
but I don't know precisely when that will be.
Steve Powell (a happy bunny)
----------some more definitions from the SPD----------
vermin (v.) Treating the dachshund for roundworm.
chinchilla (n.) Cooling device for the lower jaw.
socialcast (n.) Someone to whom everyone is speaking but nobody likes.
On 1 Feb 2012, at 11:21, Yogesh Ketkar wrote:
> Thanks Steve.
> Can you give me some idea about date of next Java Client release (with
> this bug-fix)?
>
> regards, Yogesh
>
> On Feb 1, 3:42 pm, Steve Powell <st... at rabbitmq.com> wrote:
>> Yogesh,
>>
>> Thank you for this problem report. First point: each connection defines a
>> (hidden) channel zero, so that explains why there are 20001 of some objects and
>> 20000 of others.
>>
>> As to why these are not garbage collected, we must be holding a reference
>> somewhere (probably in the Connection).
>>
>> We will investigate. I have raised a bug (24723).
>>
>> Steve Powell (a happy bunny)
>> ----------some more definitions from the SPD----------
>> vermin (v.) Treating the dachshund for roundworm.
>> chinchilla (n.) Cooling device for the lower jaw.
>> socialcast (n.) Someone to whom everyone is speaking but nobody likes.
>>
>> On 31 Jan 2012, at 17:49, Yogesh Ketkar wrote:
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>> I am using rabbitmq-java-client-bin-2.7.1/rabbitmq-client.jar with
>>> RabbitMQ 2.7.1 Server.
>>
>>> Just run this code
>>
>>> public static void main(String[] argv) throws IOException {
>>> ConnectionFactory f = new ConnectionFactory();
>>> Connection c = f.newConnection();
>>> for(int i = 0; i < 20000; ++i) {
>>> Channel ch = c.createChannel();
>>> ch.close();
>>> }
>>> System.gc();
>>> while(true) {}
>>> }
>>
>>> While program is running, observe the memory usage, it keeps on
>>> increasing
>>> Get process id and do following
>>> jmap -dump:format=b,file=yo.bin <pid>
>>> jhat jhat -J-mx768m -stack false yo.bin
>>> Once jhat brings up http server, go here
>>> http://localhost:7000/showInstanceCounts/
>>
>>> 20001 instances of class com.rabbitmq.client.impl.AMQCommand
>>> 20001 instances of class com.rabbitmq.client.impl.CommandAssembler
>>> 20000 instances of class com.rabbitmq.client.ShutdownSignalException
>>> 20000 instances of class com.rabbitmq.client.impl.AMQImpl$Channel
>>> $Close
>>> 20000 instances of class com.rabbitmq.client.impl.ChannelN
>>> 20000 instances of class com.rabbitmq.client.impl.ConsumerDispatcher
>>
>>> In-spite of closing all the channels, not only channels but associated
>>> objects (ShutdownSignalException, ChannelClose) continue to consume
>>> memory.
>>> For sure, knowing this now, I will use channelCreate call sparingly.
>>
>>> Is there a way to remedy this situation?
>>> What is also worrying is instances of AMQCommand, so would this be the
>>> case for each and every call of client library?
>>
>>> regards, Yogesh
>>
>>> _______________________________________________
>>> rabbitmq-discuss mailing list
>>> rabbitmq-disc... at lists.rabbitmq.com
>>> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>>
>> _______________________________________________
>> rabbitmq-discuss mailing list
>> rabbitmq-disc... at lists.rabbitmq.comhttps://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
More information about the rabbitmq-discuss
mailing list