Wie zerstöre ich ein Ruby-Objekt?
Nehme an, es ist einfaches Objekt wie:
object = Object.new
Da ich weiß, das erzeugt ein Objekt im Speicher (RAM).
Gibt es eine Möglichkeit zum löschen dieses Objekt aus dem RAM?
Kommentar zu dem Problem
Ruby läuft in einer verwalteten Umgebung Speicher; es ist der garbage collector hat die Aufgabe, dies für Sie tun.
Siehe Garbage-Collection (CS).
InformationsquelleAutor der Frage | 2013-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anderes als das hacken der zugrunde liegenden C-code, kein. Die Garbage collection verwaltet von der Laufzeit, so dass Sie nicht haben, um über sorgen es. Hier ist eine anständige Referenz auf den Algorithmus in Ruby 2.0.
Sobald Sie keine weiteren Verweise auf das Objekt im Speicher vom garbage collector zur Arbeit gehen. Sie sollten in Ordnung sein.
InformationsquelleAutor der Antwort Vidya
Die einfache Antwort ist, lassen Sie die GC seinen job tun.
Wenn Sie bereit sind, um loszuwerden, Referenz, nur
object = nil
. Und machen Sie keine Bezugnahme auf dieobject
.Den garbage collector wird schließlich sammeln, und klar die Referenz.
InformationsquelleAutor der Antwort vgoff
Ruby Verwaltet Der Garbage Collection Automatisch
Für die meisten Teil, Ruby Griffe garbage collection automatisch. Es gibt einige Grenzfälle, natürlich, aber im Allgemeinen Fall sollte man sich nie sorgen zu machen über die garbage collection in einer typischen Ruby-Anwendung.
Details der Implementierung der garbage collection variieren zwischen den Versionen von Ruby, aber es macht sehr wenige Knöpfe zu stellen und für die meisten Zwecke brauchen Sie Sie nicht. Wenn Sie finden, sich selbst unter Speicherdruck ist, möchten Sie vielleicht überdenken Sie Ihre design-Entscheidungen, anstatt zu versuchen, zu verwalten, die symptom von übermäßig viel Speicher Verbrauch.
Manuell Garbage Collection Auszulösen,
Im Allgemeinen, Ruby markiert Objekte für die Müllabfuhr, wenn Sie gehen, außerhalb des Gültigkeitsbereichs oder sind die nicht mehr verwiesen wird. Jedoch, einige Objekte wie Symbole nie gesammelt, und bleiben für die gesamte Laufzeit des Programms.
Können Sie manuell garbage collection auszulösen, mit GC#start, kann aber nicht wirklich freie Blöcke von Speicher die Art und Weise können Sie mit C-Programmen innerhalb von Ruby. Wenn Sie feststellen, selbst benötigen, um dies zu tun, möchten Sie vielleicht zu lösen, die zugrunde liegenden X - /Y-problem, anstatt zu versuchen, um Speicher zu verwalten direkt.
InformationsquelleAutor der Antwort Todd A. Jacobs
Können Sie nicht explizit zerstören-Objekt. Ruby hat eine automatische Speicherverwaltung. Objekte nicht mehr verwiesen wird, die von überall werden automatisch gesammelt, indem der garbage collector in der eingebauten interpreter.
Guten Artikel zu Lesen, wie die Zuteilung klug, und ein paar Werkzeuge, die Sie verwenden können, um die Feinabstimmung.
http://merbist.com/2010/07/29/object-allocation-why-you-should-care/
InformationsquelleAutor der Antwort Hepeng Zhang