Ogni processo java che avvio sulla mia macchina sembra avere 2 garbage collector per impostazione predefinita. Lo sto verificando tramite JConsole.Più garbage collector in java
Esempio: per la mia eclissi attualmente in esecuzione.
PS MarkSweep
Collection Count - 221
Collection Time - 102118
Memory Pool Names - java.lang.String[4]
PS scavenging
Collection Count - 241
Collection Time - 2428
Memory Pool Names - java.lang.String[2]
Io parto dal presupposto che hanno piscine che si sovrappongono. Come fanno i due garbage collector a lavorare insieme quando usano le stesse piscine (Eden, survivor, old gen)? Non c'è sovrapposizione nel movimento di oggetti tra i pool (come il movimento da 1 sopravvissuto all'altro quando viene chiamato il secondo algoritmo)? Anche se non lo è, perché abbiamo bisogno di più di un raccoglitore per piscina?
Ho letto this article on GC. Si riferiscono all'uso di collettori diversi per diversi GC maggiori e minori, ma sembra non esserci alcun riferimento all'utilizzo di più collettori nello stesso pool.
Cosa c'è di così strano avere collezionisti diversi per diverse generazioni? – Mikhail
Riesco a capire utilizzando diversi raccoglitori per diverse generazioni, ma sembra che ci siano più collettori per le stesse generazioni. Come funziona? –
Le raccolte principali puliscono tutto l'heap, non solo la vecchia generazione. – Mikhail