> Traces 34780, 5954, 5960 and 24996 require explanation
> 1 9.69% 9.69% 4821600 294 139416400 8501 34780 [B
TRACE 34780:
org.gjt.mm.mysql.Buffer.<init>(<Unknown>:Unknown line)
org.gjt.mm.mysql.PreparedStatement.executeQuery(<Unknown>:Unknown line)
org.apache.james.mailrepository.JDBCSpoolRepository.loadPendingMessages(:2
76)
Ok, this is bothersome. There does not appear to be any reason for there to
be 294 outstanding buffers taking up 4.8MB of heap.
> 3 3.28% 21.42% 1631296 15245 31949344 298592 5954 [C
> 5 3.09% 27.66% 1539240 9525 30157792 186620 5960 [B
TRACE 5954:
java.lang.StringBuffer.expandCapacity(StringBuffer.java:202)
java.lang.StringBuffer.append(StringBuffer.java:401)
java.io.UnixFileSystem.resolve(UnixFileSystem.java:93)
java.io.File.<init>(File.java:227)
java.io.File.listFiles(File.java:998)
org.apache.avalon.excalibur.monitor.DirectoryResource.testModifiedAfter(Dir
ectoryResource.java:84)
org.apache.avalon.excalibur.monitor.impl.AbstractMonitor.scanAllResources(A
bstractMonitor.java:132)
org.apache.avalon.excalibur.monitor.impl.ActiveMonitor.run(ActiveMonitor.ja
va:102)
java.lang.Thread.run(Thread.java:534)
TRACE 5960:
java.lang.StringCoding$CharsetSE.encode(StringCoding.java:336)
java.lang.StringCoding.encode(StringCoding.java:380)
java.lang.StringCoding.encode(StringCoding.java:386)
java.lang.String.getBytes(String.java:590)
java.io.UnixFileSystem.getLastModifiedTime(UnixFileSystem.java:Native
method)
java.io.File.lastModified(File.java:773)
org.apache.avalon.excalibur.monitor.DirectoryResource.testModifiedAfter(Dir
ectoryResource.java:93)
org.apache.avalon.excalibur.monitor.impl.AbstractMonitor.scanAllResources(A
bstractMonitor.java:132)
org.apache.avalon.excalibur.monitor.impl.ActiveMonitor.run(ActiveMonitor.ja
va:102)
I'm going to increase the stack depth for the next test to see where these
are coming from. 3MB for what? And it isn't in our code as far as I can
see, so it must be some Avalon artifact.
> 8 2.52% 35.46% 1253616 882 36346336 25572 24996 [B
TRACE 24996:
org.gjt.mm.mysql.PreparedStatement.<init>(<Unknown>:Unknown line)
org.gjt.mm.mysql.jdbc2.PreparedStatement.<init>(<Unknown>:Unknown line)
org.gjt.mm.mysql.jdbc2.Connection.prepareStatement(<Unknown>:Unknown line)
org.gjt.mm.mysql.jdbc2.Connection.prepareStatement(<Unknown>:Unknown line)
org.apache.james.util.mordred.PoolConnEntry.prepareStatement(PoolConnEntry.
java:257)
org.apache.james.mailrepository.JDBCSpoolRepository.loadPendingMessages(JDB
CSpoolRepository.java:272)
org.apache.james.mailrepository.JDBCSpoolRepository.getNextPendingMessage(J
DBCSpoolRepository.java:248)
org.apache.james.mailrepository.JDBCSpoolRepository.accept(JDBCSpoolReposit
ory.java:192)
org.apache.james.mailrepository.JDBCSpoolRepository.accept(JDBCSpoolReposit
ory.java:122)
Disturbing on two accounts. First, why are there 882 outstanding
PreparedStatement objects left in memory, and secondly, why didn't I switch
to DBCP from Mordred? :-)
So there are two incidents of MySQL apparently leaking, but not on every
opportunity. And we do have explicit close calls for that allocation spot.
--- Noel
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]