> 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 > > >
The Problem is that we need "many" changes to backport this.. And we agreed that we ony want to backport "critical" stuff.. bye Norman --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]