Ticket #17040: 17040-work5.patch

File 17040-work5.patch, 7.6 KB (added by GerdP, 7 years ago)

now also clear lists containing TestError Instances, they prevent GC of class Dataset

  • src/org/openstreetmap/josm/actions/ValidateAction.java

     
    165165                test.visit(validatedPrimitives);
    166166                test.endTest();
    167167                errors.addAll(test.getErrors());
     168                test.clear();
    168169            }
    169170            tests = null;
    170171            if (ValidatorPrefHelper.PREF_USE_IGNORE.get()) {
  • src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java

     
    6464            test.endTest();
    6565            if (ValidatorPrefHelper.PREF_OTHER.get() && ValidatorPrefHelper.PREF_OTHER_UPLOAD.get()) {
    6666                errors.addAll(test.getErrors());
     67                test.clear();
    6768            } else {
    6869                for (TestError e : test.getErrors()) {
    6970                    if (e.getSeverity() != Severity.OTHER) {
  • src/org/openstreetmap/josm/data/validation/Test.java

     
    373373    public int compareTo(Test t) {
    374374        return name.compareTo(t.name);
    375375    }
     376
     377    /**
     378     * Free resources.
     379     */
     380    public void clear() {
     381        errors.clear();
     382    }
    376383}
  • src/org/openstreetmap/josm/gui/MainPanel.java

     
    88import javax.swing.JPanel;
    99
    1010import org.openstreetmap.josm.actions.mapmode.MapMode;
     11import org.openstreetmap.josm.data.UndoRedoHandler;
    1112import org.openstreetmap.josm.gui.layer.Layer;
    1213import org.openstreetmap.josm.gui.layer.MainLayerManager;
    1314import org.openstreetmap.josm.gui.layer.MainLayerManager.LayerAvailabilityEvent;
     
    6566            map = null;
    6667            MainApplication.map = map;
    6768            add(getGettingStarted(), BorderLayout.CENTER);
     69            UndoRedoHandler.getInstance().clean();
    6870        }
    6971        setVisible(true);
    7072
  • src/org/openstreetmap/josm/gui/MapView.java

     
    807807        }
    808808        nonChangedLayersBuffer = null;
    809809        offscreenBuffer = null;
     810        removeAllZoomChangeListeners();
    810811    }
    811812
    812813    /**
  • src/org/openstreetmap/josm/gui/NavigatableComponent.java

     
    128128    }
    129129
    130130    /**
     131     * Removes a zoom change listener
     132     *
     133     * @param listener the listener. Ignored if null or already absent
     134     */
     135    protected static void removeAllZoomChangeListeners() {
     136        zoomChangeListeners.clear();
     137    }
     138
     139
     140    /**
    131141     * Adds a zoom change listener
    132142     *
    133143     * @param listener the listener. Ignored if null or already registered.
  • src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java

     
    222222        return noteData != null ? noteData.getSelectedNote() : null;
    223223    }
    224224
     225    @Override
     226    public void destroy() {
     227        MainApplication.getLayerManager().removeLayerChangeListener(this);
     228        super.destroy();
     229    }
     230
    225231    private static class NoteRenderer implements ListCellRenderer<Note> {
    226232
    227233        private final DefaultListCellRenderer defaultListCellRenderer = new DefaultListCellRenderer();
     
    436442            }
    437443        }
    438444    }
     445
    439446}
  • src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java

     
    4545import org.openstreetmap.josm.actions.relation.RecentRelationsAction;
    4646import org.openstreetmap.josm.actions.relation.SelectMembersAction;
    4747import org.openstreetmap.josm.actions.relation.SelectRelationAction;
     48import org.openstreetmap.josm.data.UndoRedoHandler;
    4849import org.openstreetmap.josm.data.osm.DataSet;
    4950import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
    5051import org.openstreetmap.josm.data.osm.IPrimitive;
     
    208209
    209210    @Override
    210211    public void destroy() {
     212        UndoRedoHandler.getInstance().removeCommandQueueListener(recentRelationsAction);
    211213        recentRelationsAction.destroy();
    212214        model.clear();
    213215        super.destroy();
  • src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java

     
    455455
    456456    @Override
    457457    public void destroy() {
     458        dialogsPanel = null;
    458459        rememberHeight();
    459460        closeDetachedDialog();
    460461        if (isShowing) {
  • src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java

     
    551551
    552552    @Override
    553553    public void destroy() {
     554        taginfoAction.destroy();
    554555        super.destroy();
    555556        Config.getPref().removeKeyPreferenceChangeListener("display.discardable-keys", preferenceListener);
    556557        Container parent = pluginHook.getParent();
  • src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java

     
    134134                    default: return false;
    135135                }
    136136            }
     137            dialog.closeDialog();
    137138        }
    138139
    139140        return true;
     
    347348     */
    348349    public void closeDialog() {
    349350        setVisible(false);
     351        MainApplication.removeMapFrameListener(saveSessionAction);
     352        saveSessionAction.destroy();
    350353        dispose();
    351354    }
    352355
  • src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

     
    10531053        super.destroy();
    10541054        data.removeSelectionListener(this);
    10551055        data.removeHighlightUpdateListener(this);
     1056        validationErrors.clear();
    10561057    }
    10571058
    10581059    @Override