Wiederholte Nutzung von Array.prototype im Windows Scripting Host führt zu Memory-Leaks

javascript
wsh
Tags: #<Tag:0x00007f9adcaa58d8> #<Tag:0x00007f9adcaa56a8>

#1

In Zeta Producer haben wir den Window Scripting Host (WSH) mit JavaScript als Sprache integriert.

Vor kurzem haben wir eines unserer Skripte angepasst und darin folgenden Code eingefügt:

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(searchValue, index) {
        // ...
    }
}

Und dieses indexOf dann auch im Code vielfach verwendet.

Das hat dann zur Folge gehabt, dass der Speicher vom Programm (eine Windows-Forms-Anwendung) langsam und stetig immer voller lief.

Nachdem wir das prototype-Konstrukt komplett entfernt hatten und durch eine reguläre Funktion ersetzt haben, war der Speicher wieder OK.

(So wie es aussieht, hat die obige Prototyp-Definition wohl auch noch Syntax-/Semantikfehler).