Chris: > Yeah, it's possible (and probable) that the TagHandlerPool > maintains a > reference back to the ServletContext in which it lives. That > might kew > your results. I'm sure that the TagHandlerPool isn't actually > taking up > that much memory.
This is strange. When I created a heap dump from my server just now, it does not have any instances of TagHandlerPool in the heap dump. That is what I expected before, but I still had them in my last dump. > Do you have any of your own tag libraries, or are you using only > 3rd-party taglibs? If you are using your own, check to see if you are > holding on to references or something like (anything like > shared objects > between tags -- that kind of thing). We are not using any 3rd party tag libraries. We are using our our tag library. I will look into that. > If you have a profiler handy (something more robust that the heap > dumper), check to see how many instances of various types > there are. For > example, if you are using org.foo.bar.taglib, then filter the object > list by org.foo.bar.taglib and take a look at how many > instances there > are. If you find that there are thousands of references to > tag handlers, > then something is probably wrong with Tomcat. Otherwise, > several hundred > references doesn't sound horrible. It's possible that they > haven't been > GC'd yet. Doing a quick grep on my summary results from the new heap dump, I get this result: 60256,1076,com/slsideas/pagegen/tags/SetPropertyTag 31296,652,com/slsideas/pagegen/tags/ValueTag 23088,481,com/slsideas/pagegen/tags/ProcessTag 13008,271,com/slsideas/pagegen/tags/IfNotNullTag 9888,206,com/slsideas/pagegen/tags/IfNullTag 9600,200,com/slsideas/pagegen/tags/IfEqTag 5616,117,com/slsideas/pagegen/tags/IfExistTag 4992,104,com/slsideas/pagegen/tags/IfNotEqTag 3216,67,com/slsideas/pagegen/tags/IncludeTag 3136,49,com/slsideas/pagegen/tags/LoopTag 960,20,com/slsideas/pagegen/tags/IfNotExistTag 608,2,class com/slsideas/pagegen/tags/ValueTag 608,2,class com/slsideas/pagegen/tags/SetPropertyTag$Converter 608,2,class com/slsideas/pagegen/tags/SetPropertyTag 608,2,class com/slsideas/pagegen/tags/ProcessTag 608,2,class com/slsideas/pagegen/tags/IncludeTag 608,2,class com/slsideas/pagegen/tags/IfNotExistTag 608,2,class com/slsideas/pagegen/tags/IfExistTag 608,2,class com/slsideas/pagegen/tags/BaseTag 304,1,class com/slsideas/pagegen/tags/LoopTag 304,1,class com/slsideas/pagegen/tags/IfNullTag 304,1,class com/slsideas/pagegen/tags/IfNotNullTag 304,1,class com/slsideas/pagegen/tags/IfNotEqTag 304,1,class com/slsideas/pagegen/tags/IfLoopTag 304,1,class com/slsideas/pagegen/tags/IfGreaterThanTag 304,1,class com/slsideas/pagegen/tags/IfGreaterOrEqTag 304,1,class com/slsideas/pagegen/tags/IfEqTag 304,1,class com/slsideas/pagegen/tags/EscapeValueTag 56,1,com/slsideas/pagegen/tags/IfLoopTag The first column is the total bytes held by the instance inself (not including references), the second column is the number of instances that were present in the heap dump, and the last column is the type of the object. I find it very hard to believe that we have over 2500 active instances of our tags. This seems to imply they are not being garbage collected. > I also noticed that you are using JDK 1.4.1. I've heard that this > version (it might only be the Sun distro -- can someone > confirm?) has an > implementation of StringBuffer that has a terrible memory leak. You > might want to consider upgrading to 1.4.2 if that's possible. I ran some code to count all of the instances of java/lang/StringBuffer and the total bytes they hold both in themselves and their references. I got 2,925,512 bytes in 15,914 instances of java/lang/StringBuffer. The heap dump shows 174,740,832 total bytes used in 892,512 total instances. I don't belive the StringBuffer is the cause of my problems. Thanks, Neil. -- Neil Aggarwal, JAMM Consulting, (972)612-6056, www.JAMMConsulting.com FREE! Valuable info on how your business can reduce operating costs by 17% or more in 6 months or less! => http://newsletter.JAMMConsulting.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]