It's possible that hotspot might optimize away the loop in case 3, but not in case 2.
Sean -----Original Message----- From: James Gallogly [mailto:[EMAIL PROTECTED]] Sent: Wednesday, December 18, 2002 4:12 PM To: Log4J Developers List Subject: RE: Large Memory usage while using log4j your right I was using an int, however the point remains unchanged. -----Original Message----- From: Ceki Gulcu [mailto:[EMAIL PROTECTED]] Sent: Wednesday, December 18, 2002 5:10 PM To: Log4J Developers List Subject: RE: Large Memory usage while using log4j At 16:50 18.12.2002 -0500, you wrote: >for(long i = 0; i < Long.MAX_VALUE; i++) >{ > if (log.isWarnEnabled()) > { > logger.warn("The value of i is " + i); > } >} >would take only ~60 seconds. I don't see how that is possible. Long.MAX_VALUE is around 2^64. Even if you could perform 2^32 computations a second (which I doubt), the loop would take 2^32 seconds to execute. 2^32 is much larger than 60. Are you sure you tried Long.MAX_VALUE and not Integer.MAX_VALUE? >The performance implications are clear....Memory is a different story >altogether and of course consume enough memory and you start to have even >worse performance! > >-----Original Message----- >From: Ceki Gulcu [mailto:[EMAIL PROTECTED]] >Sent: Wednesday, December 18, 2002 4:43 PM >To: Log4J Developers List >Subject: RE: Large Memory usage while using log4j > > > >The following will create oodles of StringBuffers and Strings although >these will be eventually garbage collected. > >Logger logger = Logger.getLogger("test"); >for(long i = 0; i < Long.MAX_VALUE; i++) { > logger.warn("The value of i is " + i); >} > >Do you know what types of objects are created? > >At 16:23 18.12.2002 -0500, you wrote: > > > That is true for our debug level logging, however we also have > > info level > >and warn levels that utilize string concatenation. We do understand we are > >paying for the string concatenation of the function call and thus creating > >several transient string objects that will be destroyed after the function > >call returns. This however should cause performance implications with a > >small memory cost. The concern is we are seeing a tremendous memory cost > >even though our log4j settings are configured to log nothing. > > > > We use this logging scheme because we have several levels of > > deployment. > >During development test cases are run with debug level, during Official > >Testing we run at a level of Info or Warn, and crank it up to debug if > >needed (by category), during Release we set our logging to error (which for > >us is the same as none). In general our ideology has been one of robustness > >and maintainability come before performance however an order of magnitude > >memory increase/decrease is something that captures our attention. > > > >Jim > > > >-----Original Message----- > >From: Sean Reilly [mailto:[EMAIL PROTECTED]] > >Sent: Wednesday, December 18, 2002 4:00 PM > >To: Log4J Developers List > >Subject: RE: Large Memory usage while using log4j > > > > > >Just to sanity check.... > > > >if you log a message that performs string concatenation, you do it like > >this, right? > > > >(assumes an org.apache.log4j.Logger instance log) > > > >if (log.isDebugEnabled()) > >{ > > log.debug("Test Log Message: " + foo + " = " + bar + "."); > >} > > > >Sean > > > >Sean Reilly > >Programmer, Point2 Technologies, Inc. > >(306) 955-1855 > >[EMAIL PROTECTED] > > > > > > > >-----Original Message----- > >From: James Gallogly [mailto:[EMAIL PROTECTED]] > >Sent: Wednesday, December 18, 2002 2:55 PM > >To: Log4J Developers List > >Subject: RE: Large Memory usage while using log4j > > > > > > > > Thanks!! That is a good thread, what concerns me the most however > > is that > >nothing is being logged. > > > > Our logging was set to error (we do no error level logging). This > > means > >that nothing is logged in either case.... does this mean that the >Conversion > >Pattern is applied before the decision to log or not occurs? In other words > >why is log4j using up so much memory to do what should be nothing? > > > >Thanks, > >Jim > > > > > >-----Original Message----- > >From: Ceki Gulcu [mailto:[EMAIL PROTECTED]] > >Sent: Wednesday, December 18, 2002 3:42 PM > >To: Log4J Developers List > >Subject: Re: Large Memory usage while using log4j > > > > > > > >The following thread might be relevant: > > > >http://marc.theaimsgroup.com/?l=log4j-dev&m=103366188809758&w=2 > > > > > > > >At 15:35 18.12.2002 -0500, you wrote: > > > > > On my project we have been heavily utilizing log4j as our >logging > > > solution. > > >Recently we ran our code under very heavy load so as part of our > > >optimization we wrote code to extract the log4j logging calls from our > > >source. We did this in hopes of reducing some of the overhead of > > >concatenation strings together thus squeezing out some performance gain. > > > > > > Much to our surprise the greatest impact was in memory usage, >our > > > memory > > >usage went from 1 gig to 100 meg. This order of magnitude decrease in > > >resource usage caught our attention to say the least. How might we be >miss > > >using the log4j tool to cause such large memory consumption? > > > > > > We are performing small scale experiments trying to duplicate >the > > > essence > > >of the problem but have had little success so far. Any help or direction > > >will be much appreciated. > > > > > >Thanks, > > >Jim > > > >-- > >Ceki > > > > > > > >-- > >To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > >For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > > > > > > > >-- > >To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > >For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > > > > > >-- > >To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > >For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > > > > > > > >-- > >To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > >For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > >-- >Ceki > > > >-- >To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> >For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > > > >-- >To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> >For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- Ceki -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>