é uma Managed-Language • Schedulers, Alocadores e GC (Ring 3 - User Level) • Gerenciamento Automático de Memória • Evita memory leaks e dangling pointers • Uso eficiente de recursos • Produtividade
Primeira linguagem a utilizar GC - LISP • Throughput (uso de CPU) e Latência (Pause) • JVM (Mark and Sweep) • O GC é uma parte importante do ciclo de vida do objeto • Pode impactar em performance
Objetos da Heap são representados por um grafo • Cada objeto é um nó / arestas são os relacionamentos • Reachable / Unreachable • GC Roots • Percorre o grafo e marca os objetos (Mark) • Deleta os objetos não utilizados (Sweep) R R R
Concorrente com threads da aplicação • Curto “Stop the world” (GC Root) • Trabalha em uma Zpage por vez • -XX:+UseZGC • -XX+UnlockExperimentalVMOptions