Speicherplatz freigeben in Java

Objektorientierte Programmiersprache auf Basis einer virtuellen Maschine (https://www.oracle.com/java/)
Antworten
Benutzeravatar
detewe89
Beiträge: 15
Registriert: So Okt 05, 2008 11:07 am

Speicherplatz freigeben in Java

Beitrag von detewe89 » Do Dez 23, 2010 11:26 am

Hi an alle,

wir müssen in Informatik eine Klasse "Mailbox" schreiben, die eingegangene eMails verwaltet und ausgibt.

Eine Methode "retrieveMails()" soll so implementiert werden, dass sie alle neuen eMails mithilfe der klasseneigenen Methode printString() ausgibt und dann den Posteingang leert (die eMails liegen alle in einem Array des Typs Mail[] )

Dieses "Leeren des Postfachs" hab ich einfach so realisiert, dass ein neues Array der Länge 0 erzeugt wird und das alte Mail-Array damit überschrieben wird. Ist dies die beste Methode? (zumindest funktioniert sie...)

Hier die Methode

Code: Alles auswählen

  public Mailbox retrieveMails(String username, String password) {
   
    if (username.equals(this.username) && password.equals(this.password)) {
	
	this.printString();
	this.mails = new Mail[0];
	return this;
	
    }
    
    else return null;
  }
Vielen Dank für eure Hilfe :)
Daniel

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Speicherplatz freigeben in Java

Beitrag von Kerli » Do Dez 23, 2010 11:54 am

Das ist eigentlich die einzige Methode in Java, da es hier keine manuelle Speicherverwaltung gibt. Alternativ könntest du auch einen Container für die Mails verwenden und die 'clear'-Methode zum Leeren verwenden, wobei es aber intern vermutlich genau gleich funktionieren wird.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Speicherplatz freigeben in Java

Beitrag von Dirty Oerti » Do Dez 23, 2010 11:57 am

Ja, das ist (unter Verwendung des Default Garbage Collectors, irgendwie soll man da wohl was ändern können, frag mich aber nicht wie) die absolut einzige Methode.
Sobald du die Referenz auf das Array löscht, wird das Array an den Garbage Collector übergeben.
Wenn der dann sieht, dass nichts anderes mehr das Array referenziert, dann löscht er es, und damit auch die darin enthaltenen Elemente (zumindest, wenn sie nicht wo anders referenziert wurden)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Antworten