[ grinder-Bugs-3287570 ] OutOfMemory about process.instrumenter.dcr.RecorderLocator

"SourceForge.net" <[email protected]> Wed, 20 Jul 2011 11:23:02 +0100
Newsgroups gmane.comp.java.grinder.devel
Message-ID <[email protected]>
Bugs item #3287570, was opened at 2011-04-15 15:49
Message generated for change (Comment added) made by philipa
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=118598&aid=3287570&group_id=18598

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Core engine
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: John (crystalstone)
>Assigned to: Philip Aston (philipa)
Summary: OutOfMemory about process.instrumenter.dcr.RecorderLocator 

Initial Comment:
ENV:
    grinder 3.4 
    jython 2.5.2
    sun jdk 1.6.0_23-b05

Grinder properties file:
    grinder.processes=1
    grinder.threads=100
    grinder.runs=2800
    grinder.jvm.arguments=-Xms1536m -Xmx1536m  

ISSUE:
   When using Grinder run performance testing for 4 hours, hit OutOfMemory issue, From the collected heapdump during run, found following issue:

Class Name                                                                                            | Shallow Heap | Retained Heap 
-------------------------------------------------------------------------------------------------------------------------------------
                                                                                                      |              |               
extra166y.CustomConcurrentHashMap @ 0x23f149e8                                                        |           48 |   587,498,920 
'- m_recorders net.grinder.engine.process.instrumenter.dcr.RecorderLocator @ 0x23eaf7a8               |           16 |            16 
   |- m_recorderRegistry net.grinder.engine.process.instrumenter.dcr.Jython25Instrumenter @ 0x23f8ad00|           56 |         3,472 
   |  '- [1] java.lang.Object[10] @ 0x23f360d0                                                        |           56 |         3,552 
   |     '- elementData java.util.ArrayList @ 0x23ec30b8                                              |           24 |         3,576 
   |        '- m_instrumenters net.grinder.engine.process.instrumenter.MasterInstrumenter @ 0x23e9caf8|           16 |         3,592 
   |           '- <Java Local> java.lang.Thread @ 0x23e9cc30  main Thread                             |          112 |         1,472 
-------------------------------------------------------------------------------------------------------------------------------------



----------------------------------------------------------------------

>Comment By: Philip Aston (philipa)
Date: 2011-07-20 11:23

Message:
I think I've tracked this down.

There's a memory leak if the same thing is repeatedly instrumented (by
calling record()). This will also cause a performance degradation in the
instrumentation code. 

Does your script repeatedly use "record()" on the same target (e.g. in the
__call__() method)? If so, you can work around the problem either by moving
the instrumentation to __init__() or the top level of the script, or by
guardiing the instrumentation ("if not instrumented: record();
instrumented=1").

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=118598&aid=3287570&group_id=18598

------------------------------------------------------------------------------
10 Tips for Better Web Security
Learn 10 ways to better secure your business today. Topics covered include:
Web security, SSL, hacker attacks & Denial of Service (DoS), private keys,
security Microsoft Exchange, secure Instant Messaging, and much more.
http://www.accelacomm.com/jaw/sfnl/114/51426210/