I wrote very similar code to that below and I noticed no appreciable memory usage difference comparing (case1 to case2 to case3)
//case1 for(long i = 0; i < Long.MAX_VALUE; i++) { logger.warn("The value of i is " + i); } //case2 for(long i = 0; i < Long.MAX_VALUE; i++) {} This is what is so perplexing. That code would also take on the order of an hour to execute (regardless of log level) while as Sean suggested: //case3 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. 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]>