Mi piacerebbe sapere quali sono le esperienze con il garbage collector G1 nel nuovissimo JDK? Vedo lanciato il NullPointerException
nel mio programma, sebbene il codice non sia cambiato e si sia comportato correttamente nei JDK precedenti.Esperienza con JDK 1.6.x G1 ("Garbage First")
risposta
Ho corso jEdit utilizzando:
-Xmx192M -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC
per l'ultimo paio di giorni sulle finestre. Non ho mai visto niente di sbagliato o di comportamento anomalo.
Ho anche provato a eseguire Intellij utilizzando G1 GC, non era giusto così bene. È durato un paio d'ore prima di crollare in un mucchio di caos, forse un po 'ottimista.
Ho provato e non ho riscontrato eccezioni. Ma le prestazioni del nostro server sono calate del 30% circa.
È deludente che tu abbia visto un degrado delle prestazioni così significativo, ma è importante ricordare che un obiettivo importante del raccoglitore G1 è ridurre al minimo le pause. Con un cumulo di pochi GB o superiore, puoi ottenere più minuti di pausa quando GC viene eseguito con gli altri raccoglitori. Quindi, anche se G1 porta a tempi di risposta un po 'più lunghi, purché siano più coerenti e non mostrino mai il comportamento peggiore, questo sarebbe un grande miglioramento per alcune app. –
dovresti pubblicare tutte le tue opzioni VM per noi qui in modo che possiamo confrontare con la tua "analisi del 30% delle gocce". – djangofan
un garbage collector avrà un impatto solo il prestazioni della vostra applicazione, non il suo correttezza. L'ho usato per Eclipse, solo per divertimento, e mi è sembrato stabile.
Vorrei cercare altrove la fonte delle eccezioni.
Un errore nel garbage collector, d'altra parte, * può * influire sulla sua correttezza. Qualcosa di "sperimentale" mi dice che non è del tutto irragionevole mettere in discussione la situazione. :) –
Sono d'accordo che è sperimentale e non lo userei per la produzione, almeno non con u14. –
Ricordare che si tratta di una funzione sperimentale, quindi è necessario aspettarsi dei problemi. – Mark
Puoi fornire un esempio di codice? C'è la possibilità che tu abbia esposto un problema di timing/concorrenza con il nuovo raccoglitore. –
Ho ricevuto eccezioni casuali OutOfMemoryError principalmente su allocazioni di array. Con il normale GC, non si verificano problemi. – akarnokd