Skip to content
  • Jim Nelson's avatar
    Memory leak and lost reference tracking: Refs #5306 · 826e9d5f
    Jim Nelson authored
    This patch solves the following memory/resource leak problems:
    
    (a) Gee.TreeSet doesn't drop references when destroyed.  Fixed by
    using a subclass that clears the set when destroyed (exactly same
    as patch made to Gee, however that won't be in distribution for
    awhile.)
    
    (b) Imap.ClientSession was holding refs to CommandResponses after
    they'd been completed.  They're now dropped.
    
    (c) Imap.ClientSessionManager now has an open/close_async() (called
    by Imap.Account.open/close_async()) that drops all ClientSessions.
    
    (d) All classes in Engine (and some in the client) use Geary.BaseObject,
    which uses a static map to track outstanding held references to
    it.  The table is dumped when Geary exits.  Must be enabled with a
    ./configure flag.
    
    Two outstanding memory leaks persist (one for Imap.ResponseCodes and
    another when messages are selected/deselected), so this doesn't close
    the ticket, but testing and use has shown these changes to make a huge
    improvement on me...
    826e9d5f