> 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]

Reply via email to