Along the lines of Nicolas' hint, here's one example of what you can *not* do, and expect to work (just the other way around): GLMPagerScrollBrick pagerModel: aModel pagerModel := aModel. -snip- pagerModel announcer weak when: GLMPagePushed send: #onPagePushed: to: self. -snip- In a workspace: pager:= GLMPagerModel new. brick := GLMPagerScrollBrick new. brick pagerModel: pager. brick := nil. Smalltalk garbageCollect. pager announcer subscriptions numberOfSubscriptions. --> 8 And, with a small addition of early exit after nilling pagerModel if aModel is nil: (pager announcer subscriptions instVarNamed: #subscriptions) anyOne subscriber pagerModel: nil. Smalltalk garbageCollect. pager announcer subscriptions numberOfSubscriptions. --> 0 In other words: You can NOT hold references to Announcers in an object that subscribes to it weakly. Cheers, Henry -- View this message in context: http://forum.world.st/Some-Memory-Leak-tp4814779p4814906.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.