Hashmap ung GC sowie allgm Frage

y0dA

Erfahrenes Mitglied
Hallo, bin zwar kein Anfänger mehr jedoch seit dem ich mit OutOfMemory in Kontakt getreten bin schwirrt mir folgende Frage durch denKopf:

+) Ich habe in einer Klasse eine HashMap welche dann bspw. Referenzen auf andere Klassen besitzt. Nun kann ich sichergehen dass wenn die Klasse welche die HashMap beinhaltet gelöscht wird wenn sich nicht mehr gebraucht wird sowie wird die HashMap gelöscht? Oder sollte man eine HashMap "manuell" leeren und die Referenzen auf null setzen? Frage deshalb, weil meine Applikation sehr viele HashMaps besitzt.

Allgm Frage: Klassenvariablen besitzen ja zumeist getter/setter damit andere Klassen mit den Werten arbeiten können - soll man auch innerhalb der Klasse die Variablen mit getter/setter bearbeiten oder direkt über this.var arbeiten?


mfg
 
Hallo,

+) Ich habe in einer Klasse eine HashMap welche dann bspw. Referenzen auf andere Klassen besitzt. Nun kann ich sichergehen dass wenn die Klasse welche die HashMap beinhaltet gelöscht wird wenn sich nicht mehr gebraucht wird sowie wird die HashMap gelöscht? Oder sollte man eine HashMap "manuell" leeren und die Referenzen auf null setzen? Frage deshalb, weil meine Applikation sehr viele HashMaps besitzt.
Schau dir mal die Klasse WeakHashMap an. HashMaps können sich manchmal als eine Art von "Speicherloch"
enthalten, da sie ihre Entries länger referenzieren als eigentlich nötig. Grundsätzlich ist es so,
dass ein Object Garbage Collected wird sobald es von keinem Thread mehr aus erreicht werden kann.

Allgm Frage: Klassenvariablen besitzen ja zumeist getter/setter damit andere Klassen mit den Werten arbeiten können - soll man auch innerhalb der Klasse die Variablen mit getter/setter bearbeiten oder direkt über this.var arbeiten?
Also ich mach das immer so. Auf private / package private Member gereife ich immer mit this. zu.
Auf public Properties greife ich mit entsprechenden gettern/settern zu.

Gruß Tom
 
Jo danke, also rein sporadisch "heikle" Maps als WeakHashMaps instanzieren?

Also gibt es keine Designvorschriften betreffend getter/setter?
 
Zurück