geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Mahieu <m...@twistedbanana.demon.co.uk>
Subject Logging code and Garbage Collection
Date Tue, 12 Aug 2003 23:01:34 GMT
All,

I know this is a tad early to comment on the code in CVS, but I've just 
noticed code like this (in 
org.apache.geronimo.deployment.scanner.DeploymentScanner)

log.debug("Finished scan of " + url + ", " + result.size() + " 
deployment(s) found");

Could everyone make sure that log statements are wrapped (eg.):

if (log.isDebugEnabled()) {
    log.debug("Finished scan of " + url + ", " + result.size() + " 
deployment(s) found");
}

The reason being that while profiling a J2EE application a while back we 
found that well over 50% of the processors' time was spent executing log 
statements just like the above - most of that with the VM messing around 
creating StringBuffer objects and then garbage collecting them.  In the 
case above, this will happen regardless of the logging level in use i.e. 
*even if* debug messages aren't actually being output.

A couple of cavaeats:
1) The code above is only executed periodically, so it's not really a 
great example of a performance killer ;-)
2) Sun's 1.4.2 VM may be better at mitigating this problem than the one 
I was profiling (1.3.1). Still, not everyone will use Sun's VM.

I know this sounds incredibly picky at this stage but I think it'd be an 
idea to get into good habits now rather than later.  If others agree 
with the above, I'll add it to the coding standards in the Wiki.

Mark


Mime
View raw message