Tomcat 6.0.x (unsure but 33+) with Java 1.6 and Windows 2008 Server. I've got a customer who is monitoring his system using the Windows Performance Monitor and is concerned about Tomcat usage of the nonpaged pool. When monitoring just the Tomcat service, it shows the line for the pool to slowly rise over time, with hardly ever a drop that cannot be attributed to a restart of the service (I think). I know that the nonpaged pool contains structures that should not be paged out by Windows per this quote: "Nonpaged pool is therefore always kept present in physical memory and nonpaged pool virtual memory is assigned physical memory. Common system data structures stored in nonpaged pool include the kernel and objects that represent processes and threads, synchronization objects like mutexes, semaphores and events, references to files, which are represented as file objects, and I/O request packets (IRPs), which represent I/O operations."
I am struggling with how this relates to internal workings of Tomcat & Java. Obviously, as more processing threads, in this case connectors not executors, are opened, I would expect to see a rise in this pool to support all the items it uses. I would expect to see a drop as usage dropped and connectors were returned (or are they permanent at 6). Also, I assume processing threads for the Oracle connection pool will cause this to increase as well, and should drop as the pool size drop back to normal. Any app-based threads would also cause a rise, but should drop if the thread is properly terminated. I guess that this shows a potential memory leak somewhere, I'm just wondering if there are other things I should look at that could determine if this is normal behavior or indicative of a real issue. I do most of my Tomcat app monitoring using jconsole, jvisualvm, and the Oracle OEM for looking for connection pool leaks there (not an easy task). Any help is appreciated. Jeff