[Mono-bugs] [Bug 345430] New: Mono.Data.Sqlite uses 5 MB heap b/c of reflection

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sat Dec 1 14:54:04 EST 2007


           Summary: Mono.Data.Sqlite uses 5 MB heap b/c of reflection
           Product: Mono: Class Libraries
           Version: SVN
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Major
          Priority: P5 - None
         Component: Mono.Data.Sqlite
        AssignedTo: mhabersack at novell.com
        ReportedBy: gburt at novell.com
         QAContact: mono-bugs at ximian.com
          Found By: ---

I tried replacing Mono.Data.SqliteClient with Mono.Data.Sqlite in Banshee, and
it functioned fine, but I noticed it adversely affected Banshee's memory usage:

25.1M writable w/o it (20M heap)  and 34.6M writable w/ it (25M heap)

Using heap-buddy, it looks like most of the new memory usage comes from


and in particular the static constructor, that has this comment:

/// Using reflection, enumerate all assemblies in the current appdomain looking
for classes that
/// have a SqliteFunctionAttribute attribute, and registering them accordingly.

Since Types are not GC'd, this is a major memory leak.

If there is a definite need to dynamically/automatically load all the
SqliteFunctions on startup, another way needs to be found (see the work done on
Banshee/Beagle regarding plugins and this issue).  If not, I would suggest this
static ctor is simply removed.

Possibly another bug (I don't know the internal timing details of how
assemblies are loaded and static ctors called) - is it possible to not
automatically load some SqliteFunctions b/c they are in assemblies loaded after

Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

More information about the mono-bugs mailing list