Verschiebt einen Wert in eine andere Umgebung

9

Angenommen, ich habe einen Wert, der im Speicher groß ist (vielleicht eine riesige Matrix). Gibt es eine Möglichkeit, diesen Wert in eine andere Umgebung zu verschieben statt zu kopieren und dann zu löschen? Der Kopier- / Klon-Ansatz erhöht den Speicherbedarf vorübergehend um die Größe des Werts.

Ich habe diesen Beitrag überprüft, enthält aber nicht die Lösung für mein Problem. Das Teilen derselben Umgebung (um die Kopie zu vermeiden) ist keine Option . Ich muss den Wert wirklich verschieben.

    
SFun28 06.02.2013, 15:54
quelle

1 Antwort

4

Vielleicht auf Festplatte schreiben, löschen, von Festplatte lesen? Das einzige potentielle Problem, das ich mit diesem Ansatz vorhersehen kann, ist, dass jegliche Beziehungen zwischen Eltern / Kind-Umgebungen verloren gehen. Aber wenn Sie nur versuchen, die Werte von einer Umgebung in eine andere zu kopieren, ist das vielleicht kein Problem?

Aktualisierung:

Ich kann nicht replizieren, was Sie über den Kopieransatz sagen. Der folgende Code zeigt, dass der maximal verwendete Speicher (wie von gc gemeldet) nicht erhöht wird. Dies liegt daran, dass die Werte "versprochen" und nicht tief kopiert werden. Eine Kopie wird jedoch erstellt, wenn Sie ein Objekt in der neuen Umgebung ändern, bevor Sie es aus der alten Umgebung löschen.

%Vor%     
Joshua Ulrich 06.02.2013, 16:02
quelle

Tags und Links