Wegen Generations-Sammlung, ich würde sagen müssen, dass das Verfolgen und Kopieren nicht große Engpässe zu GC sind.
Was helfen würde, sind hardwaregestützte READ-Barrieren, die die Notwendigkeit von "Stop the world" -Pausen bei Stack-Scans und der Markierung des Heaps beseitigen.
Azul Systems hat dies getan: http://www.azulsystems.com/products/compute_appliance.htm Sie gaben eine Präsentation bei JavaOne darüber, wie ihre Hardware-Modifikationen völlig pauseless GC ermöglicht.
Eine weitere Verbesserung wären hardwaregestützte Schreibbarrieren für die Verfolgung von gespeicherten Mengen.
Generative GCs, und noch mehr für G1 oder Garbage First, reduzieren die Anzahl der zu scannenden Heaps, indem sie nur eine Partition scannen und eine Liste der gemerkten Sets für zonenübergreifende Zeiger führen.
Das Problem ist, das bedeutet, JEDERMAL setzt der Mutator (lustiges Wort für das 'echte Programm') einen Zeiger, der auch einen Eintrag in die entsprechende, gemerkte Menge setzen muss. Sie haben also (kleinen) Overhead, auch wenn Sie nicht GCing sind. Wenn Sie dies reduzieren können, reduzieren Sie sowohl die für GCing erforderlichen Pausenzeiten als auch die Gesamtleistung des Programms.
der Müllwagen, der von meinem Haus kommt, hebt auf und leert den Mülleimer von selbst. zählt das? – kenwarner
Ich frage mich, ob dies würde die gesamte GC aktivieren - Stellen Sie sich vor, keine Prozesspartitionierung (und durch Verschwendung von Fragmentierung, und verteilten reservierten leeren Raum für neue Alloc). Installieren Sie die Zeitüberprüfung der Software und die Fähigkeit, Objekte zwischen Anwendungen ohne Kopieren zu übertragen. Ich mag Befähiger. Die Hardwareunterstützung könnte statistische Messungen umfassen, die fortlaufend kalte Speicherblöcke finden, sowie Referenzzählung. – Todd