#1247 closed defect (fixed)
Bote + IMAP => OOM
Reported by: | killyourtv | Owned by: | HungryHobo |
---|---|---|---|
Priority: | major | Milestone: | 0.9.13 |
Component: | apps/plugins | Version: | |
Keywords: | Cc: | Zlatin Balevsky | |
Parent Tickets: | Sensitive: | no |
Description
I don't know if this is a known problem, but navigating I2P-Bote with IMAP triggers an OOM.
I don't know (yet) if it's a specific folder causing it or a specific message, but I do have a heap dump that was generated at the time of the OOM in case it's be of use.
The largest retained objects are in i2p.bote.folder.EmailFolder
.
(This is with I2P-Bote in trunk, currently rev 586515162c23d6374d92552e7433e47207e52edd)
Subtickets
Attachments (1)
Change History (7)
comment:1 Changed 7 years ago by
Cc: | Zlatin Balevsky added |
---|
comment:2 Changed 7 years ago by
I'll set up a Debian unstable VM (with throwaway IDs) and try reproducing this problem in the virtualized environment.
comment:3 Changed 7 years ago by
With current trunk I can still reproduce the OOM in my normal installation.
I have not yet been able to reproduce it in my test virtual machine.
comment:4 Changed 7 years ago by
Milestone: | → 0.9.13 |
---|---|
Status: | new → testing |
My suspicion is that i2p.bote.imap.MapperFactory.getMailboxes()
was causing this problem; the BoteMailboxes
were not cached, but each one registers a FolderListener
with its underlying EmailFolder
. I believe this caused them to never be GCed. I am not sure why EmailFolder
is the one that shows up as the largest retained objects, there should only ever be four (inbox, outbox, sent and trash).
Please try latest trunk, which caches BoteMailboxes
.
comment:5 Changed 7 years ago by
Milestone: | 0.9.13 |
---|---|
Resolution: | → fixed |
Status: | testing → closed |
It's been about a week and it looks like the OOMs that I was seeing are gone.
comment:6 Changed 7 years ago by
Milestone: | → 0.9.13 |
---|
A heap dump is the best/only way to properly debug this. However, you want to make sure there is no sensitive information in the dump. That means you should use a separate instance of the jvm with only Bote in it, and you should use a throwaway Bote identity.