Wie erzwinge ich, dass JavaScript einen String tief kopiert?
Ich habe einen Javascript-Code, der so aussieht:
var myClass = {
ids: {}
myFunc: function(huge_string) {
var id = huge_string.substr(0,2);
ids[id] = true;
}
}
päter wird die Funktion mit einigen großen Strings (100 MB +) aufgerufen. Ich möchte nur eine kurze ID speichern, die ich in jeder Zeichenfolge finde. Die Teilzeichenfolge-Funktion von Google Chrome (in meinem Code ist sie eigentlich regulär) gibt jedoch nur ein "Stringsegment" -Objekt zurück, das auf das Original verweist. Also nach einer Reihe von Anrufen zumyFunc
, auf meinem Chrome-Tab ist nicht genügend Speicher verfügbar, da das temporärehuge_string
Objekte können nicht mit Müll eingesammelt werden.
Wie kann ich eine Kopie des Strings erstellenid
so dass ein Verweis auf diehuge_string
wird nicht gepflegt und dashuge_string
kann Müll gesammelt werden?