Norman, > > I'm back to running a test. Started JAMES > > with -server -Xms128M -Xmx256M -Xrunhprof heap=sites,depth=12
> > If this will just run for 48-72 hours, hopefully I can gather > > some useful data. > let us see what the new debugging show us ;-) So far, I have a working hypothesis, but will continue to monitor the heap. We may be getting hit by the known-to-be-bad cache inside of InetAddress. After 12 hours or so, InetAddress cache related objects appear to be in excess of 20% of heap usage, and increasing. From where? It appears to be a single line in the SMTP handler that was changed in trunk, but not backported. 2.3.0: remoteHost = socket.getInetAddress().getHostName(); trunk: remoteHost = dnsServer.getHostName(socket.getInetAddress()); The dnsServer call does: public String getHostName(InetAddress addr){ try { return org.xbill.DNS.Address.getHostName(addr); } catch (UnknownHostException e) { return addr.getHostAddress(); } } which does not use the InetAddress cache. By the way, a bit of observation regarding garbage collection. Because of the memstat instrumentation in RemoteManager, I can make sure to take heap dumps only and immediately after the JVM does a full GC. And I can see that with 1.4.2_09 under load and with heap dumping on, it doesn't appear to GC at all until it must. Asking for a GC under load doesn't often provide one, so it is good to know when one *does* happen. When I want to dump the heap, I just keep watching for the full GC, and then I request the dump. --- Noel --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]