2014-11-10 18 views
11

Tutti i GC che conosco tranne Azul sono in qualche modo concomitanti, ma hanno almeno un piccolo componente stop-the-world. Perché non ci sono altri GC come Azul?Perché non ci sono altri GC senza interruzione

Azul ha brevettato la propria tecnologia nella misura in cui non è possibile farlo?

Oppure le barriere di lettura/scrittura necessarie per le operazioni senza sessione comportano un sovraccarico tale da renderne impraticabile la maggior parte dei carichi di lavoro?

+2

Non penso che questa sia una domanda su un problema concreto e rispondente, e invece è una questione che invita opinioni personali e congetture. Quindi sarebbe probabilmente più adatto a un forum di Stack Overflow. –

+0

Posso solo indovinare, ma presumo che una parte di esso sia un problema di licenza/brevettazione - azul vuole comunque fare soldi. Oltre a ciò, dai loro esperienti grezzi con throughput nei white paper sembra che non ci sia alcun vantaggio in termini di velocità per le applicazioni più grandi e su quelle più piccole il singhiozzo occasionale dovuto alla collezione stop-the-world molto probabilmente non è poi così importante. – Thomas

+0

Questa domanda sembra essere fuori tema perché si sta solo chiedendo perché qualcosa non sia stato ancora inventato. Nessuna risposta effettiva è possibile. – EJP

risposta

7

Basato su the Azul whitepaper on C4, sembra che C4 sia una tecnologia molto nuova, un'implementazione di un algoritmo pubblicato nel 2005, prima su hardware personalizzato e poi trasferito specificatamente su Linux su x86, e l'implementazione JVM si trova molto vicino al kernel Sistema VM.

Poiché OpenJDK/HotSpot è ampiamente utilizzato su un certo numero di piattaforme e nei principali carichi di lavoro di produzione, tende a spostarsi più lentamente quando si adottano importanti innovazioni negli algoritmi (il passaggio a TimSort è un buon esempio). Le versioni di Java 8 hanno introdotto la prima importante revisione del sistema GC in anni (con l'eliminazione di PermGen), e miglioramenti come C4, se è pratico essere portati cross-platform o astratti senza significativi aspetti negativi agli internisti di JVM, sono probabili da provare e poi adottato in OpenJDK/HotSpot nelle prossime versioni.

+0

Buon punto, infatti, la prima Azul usava i bit dei tag hardware e quindi le modifiche al livello del kernel Linux ed è ancora la soluzione solo per Linux, rispetto a Shenandoah "BTW, per impostare il record direttamente: C4 (nella forma che è stata commercializzata all'interno la nostra Zing JVM per un po 'di tempo) è un software puro, e funziona su vanilla, intere distro Linux/x86 (RHEL 5.x/6.x, CentOS 5.x/6.x, SLES, Ubuntu, ...) e il chicchi non modificati che vengono con loro ". https://rkennke.wordpress.com/2013/06/10/shenandoah-a-pauseless-gc-for-openjdk/ – michaelok

6

Implementare i garbage collector è piuttosto complicato e non ci sono molte applicazioni che giustifichino davvero un collezionista senza paus. Come hai detto, leggi/scrivi barriere per imporre un overhead piuttosto elevato che vuoi pagare solo se hai assolutamente bisogno di una bassa latenza e sei disposto a dare un colpo al throughput.

Detto questo, un GC a bassa pausa chiamato Shenandoah viene implementato in questo JEP: http://openjdk.java.net/jeps/189. Come programmatore Java, spero che sarà disponibile tra qualche anno.

Problemi correlati