geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason Dillon <ja...@coredevelopers.net>
Subject Re: Logging code and Garbage Collection
Date Wed, 13 Aug 2003 07:00:53 GMT
In general I agree, trace and debug logs should be guarded.

+1

--jason


On Wednesday, August 13, 2003, at 06:01  AM, Mark Mahieu wrote:

> 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