Re: [gui-dev] Chasing possible memory leaks?

Gregorio Roper <[email protected]> Fri, 20 Aug 2004 08:56:01 +0200
Newsgroups gmane.network.gnutella.limewire.gui.devel
Message-ID <[email protected]>
LimeWire is going to need NIO before increasing the number of connections... NIO 
rocks!

Susheel M. Daswani wrote:
> 
> Yes, message traffic has really gone up as the network has grown 
> (running a UP increasingly takes more bandwidth).  I really think it may 
> be time for a increase in outdegree and decrease in TTL, but only maybe 
> after that meeting with Sun results in less memory usage :).
> 
> Thanks!
> Susheel
> 
> Sam Berlin wrote:
> 
>> Nothing has changed related to flow control & QRP in well over a few 
>> months,
>> so the likely conclusion is that it really is a pickup in message traffic
>> combined with the older addition of high outdegree (which would have no
>> caused memory problems while there was little traffic).
>>
>> Getting even fancier with weak links might solve this. ;)
>>
>> Thanks,
>>  Sam
>>
>>
>>> -----Original Message-----
>>> From: [email protected] [mailto:gui-dev-
>>> [email protected]] On Behalf Of Greg Bildson
>>> Sent: Thursday, August 19, 2004 10:42 AM
>>> To: [email protected]
>>> Subject: RE: [gui-dev] Chasing possible memory leaks?
>>>
>>> It's been a long while since flow control kicked in.  Those
>>> PriorityMessageQueues could be somewhat troublesome with the recent 
>>> pickup
>>> in message traffic.  However, it almost sounds like your connections 
>>> (and
>>> QRP tables) keep building up.  Perhaps some closes got lost or are we
>>> trying
>>> to do something too fancy with weak links now?
>>>
>>> Thanks
>>> -greg
>>>
>>> -----Original Message-----
>>> From: [email protected]
>>> [mailto:[email protected]]On Behalf Of Jens-Uwe Mager
>>> Sent: Thursday, August 19, 2004 7:00 AM
>>> To: [email protected]
>>> Subject: [gui-dev] Chasing possible memory leaks?
>>>
>>>
>>> While running as an ultrapeer my machines appear to go out of memory
>>> somehow. I did a few runs with -Xrunhprof:heap=sites and I have a few
>>> questions if that memory usage is about to be expected. The top entries
>>> in the list of hot sites are these:
>>>
>>> SITES BEGIN (ordered by live bytes) Wed Aug 18 13:22:34 2004
>>>          percent         live       alloc'ed  stack class
>>> rank   self  accum    bytes objs   bytes objs trace name
>>>    1 11.41% 11.41% 11428008 1214 22449936 11149 60808 [J
>>>    2  5.67% 17.08%  5676336 114744 6247840 125345 60656 [C
>>>    3  2.54% 19.63%  2545920 6120 2589184 6224 56176 java.lang.Object
>>>    4  2.54% 22.17%  2545920 6120 2589184 6224 56299 java.lang.Object
>>>    5  2.54% 24.71%  2545920 6120 2589184 6224 56171 java.lang.Object
>>>    6  2.54% 27.26%  2545920 6120 2589184 6224 56181 java.lang.Object
>>>    7  2.43% 29.69%  2435648 29614 2576640 31128 51089 [C
>>>    8  2.37% 32.06%  2374104 98921 2602368 108432 60620 java.lang.String
>>>    9  1.93% 33.99%  1930240 4640 1970176 4736 59661 java.lang.Object
>>>   10  1.93% 35.92%  1930240 4640 1970176 4736 59636 java.lang.Object
>>>   11  1.93% 37.85%  1930240 4640 1970176 4736 59646 java.lang.Object
>>>   12  1.93% 39.77%  1930240 4640 1970176 4736 59641 java.lang.Object
>>>
>>> The first entry appears to relate to this stack trace:
>>>
>>> TRACE 60808:
>>>        
>>> com.limegroup.gnutella.util.BitSet.ensureCapacity(BitSet.java:140)
>>>        com.limegroup.gnutella.util.BitSet.set(BitSet.java:265)
>>>
>>> com.limegroup.gnutella.routing.QueryRouteTable.handlePatch(QueryRouteTab
>>> le.java:462)
>>>
>>> com.limegroup.gnutella.routing.QueryRouteTable.patch(QueryRouteTable.jav
>>> a:405)
>>>
>>> com.limegroup.gnutella.ManagedConnection.patchQueryRouteTable(ManagedCon
>>> nection.java:395)
>>>
>>> com.limegroup.gnutella.MessageRouter.handlePatchTableMessage(MessageRout
>>> er.java:2345)
>>>
>>> com.limegroup.gnutella.MessageRouter.handleMessage(MessageRouter.java:34
>>> 8)
>>>
>>> com.limegroup.gnutella.ManagedConnection.loopForMessages(ManagedConnecti
>>> on.java:995)
>>>
>>> com.limegroup.gnutella.ConnectionManager.startConnection(ConnectionManag
>>> er.java:1943)
>>>
>>> Does that mean that my machine needs 22MB of routing tables?
>>>
>>> Ranks 2 to 6 appear all to be related, they all appear to revolve around
>>> this stack trace:
>>>
>>> TRACE 56176:
>>>        com.limegroup.gnutella.util.Buffer.<init>(Buffer.java:47)
>>>
>>> com.limegroup.gnutella.util.BucketQueue.<init>(BucketQueue.java:46)
>>>
>>> com.limegroup.gnutella.connection.PriorityMessageQueue.<init>(PriorityMe
>>> ssageQueue.java:50)
>>>
>>> com.limegroup.gnutella.ManagedConnection.buildAndStartQueues(ManagedConn
>>> ection.java:651)
>>>
>>> com.limegroup.gnutella.ConnectionManager.connectionInitialized(Connectio
>>> nManager.java:1216)
>>>
>>> com.limegroup.gnutella.ConnectionManager.completeConnectionInitializatio
>>> n(ConnectionManager.java:1834)
>>>
>>> com.limegroup.gnutella.ConnectionManager.initializeExternallyGeneratedCo
>>> nnection(ConnectionManager.java:1814)
>>>
>>> com.limegroup.gnutella.ConnectionManager.acceptConnection(ConnectionMana
>>> ger.java:333)
>>>
>>> com.limegroup.gnutella.Acceptor$ConnectionDispatchRunner.run(Acceptor.ja
>>> va:592)
>>>
>>> And the large number of strings in rank 8 appear to be from this trace:
>>>
>>> TRACE 60620:
>>>
>>> com.limegroup.gnutella.messages.QueryRequest.<init>(QueryRequest.java:12
>>> 49)
>>>
>>> com.limegroup.gnutella.messages.QueryRequest.createNetworkQuery(QueryReq
>>> uest.java:854)
>>>        com.limegroup.gnutella.messages.Message.read(Message.java:303)
>>>
>>> com.limegroup.gnutella.Connection.readAndUpdateStatistics(Connection.jav
>>> a:1084)
>>>        com.limegroup.gnutella.Connection.receive(Connection.java:1029)
>>>
>>> com.limegroup.gnutella.ManagedConnection.receive(ManagedConnection.java:
>>> 481)
>>>
>>> com.limegroup.gnutella.ManagedConnection.loopForMessages(ManagedConnecti
>>> on.java:970)
>>>
>>> com.limegroup.gnutella.ConnectionManager.startConnection(ConnectionManag
>>> er.java:1943)
>>>
>>> com.limegroup.gnutella.ConnectionManager.access$400(ConnectionManager.ja
>>> va:56)
>>>
>>> I am not entirely sure if I am not barking up the wrong tree, but I get
>>> the feeling that there are a few memory leaks that appear to be
>>> triggered if I am turning ultrapeer on. If there is interest, the full
>>> trace file is here:
>>>
>>> http://baghira.han.de/~jum/limewire.sites.gz
>>> -- 
>>> Jens-Uwe Mager    <pgp-mailto:F476EBC2>
>>> _______________________________________________
>>> gui-dev mailing list
>>> [email protected]
>>> http://www.limewire.org/mailman/listinfo/gui-dev
>>>
>>>
>>>
>>> _______________________________________________
>>> gui-dev mailing list
>>> [email protected]
>>> http://www.limewire.org/mailman/listinfo/gui-dev
>>
>>
>>
>> _______________________________________________
>> gui-dev mailing list
>> [email protected]
>> http://www.limewire.org/mailman/listinfo/gui-dev
>>
>> .
>>
> _______________________________________________
> gui-dev mailing list
> [email protected]
> http://www.limewire.org/mailman/listinfo/gui-dev
> 
> 
_______________________________________________
gui-dev mailing list
[email protected]
http://www.limewire.org/mailman/listinfo/gui-dev