Zurück zur Übersicht

Begriff

WebAssembly GC (Garbage Collection)

WebAssembly Programming Languages S4
2 Quellen 0 Lernpfade 1 Backlink enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

WebAssembly (2017) war perfekt für C++ und Rust (Sprachen ohne GC). Sie verwalten ihren Speicher selbst (linear memory). Aber Sprachen wie Java, Kotlin, Dart, Python, C# brauchen einen Garbage Collector. Früher (vor WasmGC) musste man den ganzen GC der Sprache mit in das Wasm-Modul kompilieren. Ergebnis: "Hallo Welt" in Java = 10 MB Wasm-Datei. (Unbenutzbar im Web). WasmGC erlaubt es Wasm, den Garbage Collector des Browsers (V8, JavaScriptCore) mitzunutzen. Die Wasm-Datei enthält nur noch den Code, keinen eigenen GC. Ergebnis: "Hallo Welt" in Java/Kotlin = 50 KB. Das ist der Durchbruch für High-Level-Sprachen im Browser.

Merksatz: Eine Erweiterung des WebAssembly-Standards, die es Wasm-Modulen ermöglicht, direkt auf den Garbage Collector des Host-Systems (z. B. Browser) zuzugreifen, statt einen eigenen GC mitliefern zu müssen.


Quick-Check

  1. Rust?
    Rust braucht WasmGC nicht, weil Rust keinen GC hat (Ownership Model). Aber Rust kann WasmGC nutzen, um besser mit dem Browser-DOM zu interagieren ("Reference Types").
  2. Server-Side Wasm?
    Auch Wasm-Runtimes auf dem Server (WasmEdge, Wasmtime) implementieren WasmGC. Damit kann man Java-Microservices als winzige Wasm-Module deployen (Startzeit < 1ms).
  3. Ist JVM tot?
    Nein. Die JVM ist extrem optimiert (JIT). WasmGC ist noch jung und oft langsamer als eine echte JVM. Aber für Serverless (Cold Starts) ist Wasm unschlagbar.