Author: markt Date: Sun Sep 23 20:11:31 2012 New Revision: 1389138 URL: http://svn.apache.org/viewvc?rev=1389138&view=rev Log: Switch to ConcurrentStack removing 4% of object allocation during load test (low hanging fruit)
Modified: tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java Modified: tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java?rev=1389138&r1=1389137&r2=1389138&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java (original) +++ tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java Sun Sep 23 20:11:31 2012 @@ -35,9 +35,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Locale; -import java.util.Queue; import java.util.TimeZone; -import java.util.concurrent.ConcurrentLinkedQueue; import javax.servlet.ServletException; import javax.servlet.http.Cookie; @@ -55,6 +53,7 @@ import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.ExceptionUtils; import org.apache.tomcat.util.buf.B2CConverter; +import org.apache.tomcat.util.collections.SynchronizedStack; /** @@ -572,7 +571,8 @@ public class AccessLogValve extends Valv * Buffer pool used for log message generation. Pool used to reduce garbage * generation. */ - private Queue<CharBuffer> charBuffers = new ConcurrentLinkedQueue<>(); + private SynchronizedStack<CharBuffer> charBuffers = + new SynchronizedStack<>(); /** * Log message buffers are usually recycled and re-used. To prevent @@ -935,7 +935,7 @@ public class AccessLogValve extends Valv long start = request.getCoyoteRequest().getStartTime(); Date date = getDate(start + time); - CharBuffer result = charBuffers.poll(); + CharBuffer result = charBuffers.pop(); if (result == null) { result = CharBuffer.allocate(128); } @@ -947,10 +947,9 @@ public class AccessLogValve extends Valv result.flip(); log(result); - // TODO - Make this configurable if (result.length() <= maxLogMessageBufferSize) { result.clear(); - charBuffers.add(result); + charBuffers.push(result); } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org