Modify

Opened 6 days ago

Last modified 6 days ago

#19793 new task

RFC: Memory leaks: Bad programming pattern reg. listeners

Reported by: GerdP Owned by: team
Priority: normal Milestone:
Component: Core Version:
Keywords: Cc:

Description (last modified by GerdP)

I've noticed that a lot of memory leaks occur where source code contains either this regex pattern
[Mm]ain.*Listener\(new
This matches eg.

  MainApplication.getLayerManager().addLayerChangeListener(new GpxLayerAddedListener());

or the pattern [Mm]ain.*Listener\(.* \-\>

  Preferences.main().addPreferenceChangeListener(e -> updateSystemProperties());

Reason is quite obvious:
The code fragments create a new Listener and add it to a global list, but the ref to the new listener instance is not stored and therefore removeListener() is never called. If the code is only executed once in a JOSM session this is no big problem but it's hard to find out, so I think we should avoid this. Even the patterns Listener\(new and Listener\(.* \-\> are at least error prone.

Attachments (0)

Change History (1)

comment:1 Changed 6 days ago by GerdP

Description: modified (diff)

Modify Ticket

Change Properties
Set your email in Preferences
Action
as new The owner will remain team.
as The resolution will be set.
to The owner will be changed from team to the specified user.
The owner will change to GerdP
as duplicate The resolution will be set to duplicate.The specified ticket will be cross-referenced with this ticket
The owner will be changed from team to anonymous.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.