diff --git a/src/calibre/gui2/actions/choose_library.py b/src/calibre/gui2/actions/choose_library.py index a2679c2482..930e5e29aa 100644 --- a/src/calibre/gui2/actions/choose_library.py +++ b/src/calibre/gui2/actions/choose_library.py @@ -384,7 +384,14 @@ class ChooseLibraryAction(InterfaceAction): return prefs['library_path'] = loc + #from calibre.utils.mem import memory + #import weakref, gc + #ref = weakref.ref(self.gui.library_view.model().db) + #before = memory()/1024**2 self.gui.library_moved(loc) + #print gc.get_referrers(ref)[0] + #for i in xrange(3): gc.collect() + #print 'leaked:', memory()/1024**2 - before def qs_requested(self, idx, *args): self.switch_requested(self.qs_locations[idx]) diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index c6d069cc86..b33c059c9b 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -440,6 +440,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ except: import traceback traceback.print_exc() + olddb.break_cycles() if self.device_connected: self.set_books_in_library(self.booklists(), reset=True) self.refresh_ondevice() diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 33593e93fe..3dc110c1c8 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -361,6 +361,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): self.refresh() self.last_update_check = self.last_modified() + def break_cycles(self): + self.data = self.field_metadata = self.prefs = self.listeners = None def initialize_database(self): metadata_sqlite = open(P('metadata_sqlite.sql'), 'rb').read()