-
Krieger
Der Speicher wird generell erst dann freigegeben, wenn neuer Speicher angefordert wird und der vorhandene nicht mehr ausreicht, oder wenn eine bestimmte Anzahl von Objekten erzeugt wurde. Ich glaub Ruby startet den GarbageCollector das erste Mal, wenn du mehr als 8 Megabyte Speicher verbrauchst. Aber das kann im Maker auch anders sein. Jedenfalls musst du dir keine Sorgen machen, dass der Speicher nicht mehr ausreicht, denn vorher wird Ruby den GarbageCollector aufrufen und alle nicht mehr referenzierten Objekte löschen. Nicht mehr referenziert heißt: es darf keine Variable mehr auf das Objekt zeigen. In einer Methode mit lokalen Variablen ist das dann der Fall, wenn die Methode beendet wurde. Ruft die Methode sich rekursiv selbst auf, so sind innerhalb des rekursiven Aufrufs noch alle lokalen Variablen der aufrufenden Methode gültig (wobei ich nicht weiß wie weit Ruby hier optimiert - ich fürchte aber, es wird nicht viel sein).
Achja: Eine Kopie eines Arrays bedeutet nicht zwangsweise, dass auch alle Elemente kopiert werden. Dies geschieht in Ruby lazy. Das heißt: Erst wenn du schreibend auf einen der beiden Arrays zugreifst, werden die Elemente kopiert. Vorher teilen sich beide Arrays ihren Speicherbereich.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln