Ciao, questo è che non vogliono fare.
Non comprendiamo il vantaggio della raccolta dei rifiuti.
Non passiamo un po 'di tempo a capire gli algoritmi di Geesey.
Ci sono due sfide principali che devono essere affrontate.
Il primo è come il garbage collector identifica gli oggetti morti.
Butterine si sta facendo questa identificazione.
Ci sono buone probabilità che alcuni nuovi oggetti vengano creati mentre alcuni vecchi oggetti vengono abbandonati in uno
scenario del genere, quindi gli oggetti appena abbandonati dovrebbero essere recuperati e il condotto sarebbe molto
difficile da fare per evitare questa complessità.
Una cosa da fare sarebbe quella di pubblicare l'applicazione per un po 'di tempo prima che DC venga eseguita.
Ma se ci fermiamo troppo a lungo, questo potrebbe influenzare l'esperienza dell'utente.
Immagino che sia un'applicazione web, quindi il sito Web potrebbe non essere reattivo e questo significa che potremmo
perdere clienti, quindi una seconda sfida è garantire che il passatempo dell'applicazione sia minimo.
Quindi queste sono le due sfide.
Vediamo come i designer Djala si rivolgono a loro.
Diamo un'occhiata alla prima sfida che riguarda l'identificazione degli oggetti morti.
E naturalmente reclamare il loro spazio a quando vado da loro per fare ciò è chiamato noi segno e sweep
che ha due facce che segnano e spazzano.
Seguendo il nome si può presumere che Mark per anni implicherebbe l'identificazione di oggetti morti ma in realtà fa l'opposto che è quello
di identificare tutti gli oggetti dal vivo e il modo in cui fa questo tiene traccia di alcuni oggetti specifici
chiamati root della raccolta di rifiuti sotto la radice della raccolta di dati inutili potrebbe essere qualcosa di simile
a una variabile locale in uno dei metodi astutamente eseguibili.
Oppure potrebbe essere un campo statico in una classe che è stata ordinata su questo sarebbe un oggetto di amici e
non un modello che sto facendo segnare per questo.
DC eliminerebbe il grafico degli oggetti da ciascuna rotta del GC per identificare tutti gli oggetti dal vivo.
Quale esempio consideriamo questa illustrazione qui.
Eccolo.
Percorso GC che sta inferendo un oggetto e quell'oggetto fa riferimento a due ulteriori oggetti e tali oggetti
fanno riferimento ad altri oggetti formando quindi un grafico oggetto.
Le enfatizzate una volta in blu sono raggiungibili quelle in GRY non più raggiungibili.
Cioè erano raggiungibili ad un certo punto.
Ma a questo punto del tempo sono fuori portata.
Quindi quelli che sono oggetti irraggiungibili sono oggetti morti.
Cioè non fanno come qualsiasi attività di Francis So nella fase finta GC proverà
a cazzuole questo oggetto grafico su deriderà tutti gli oggetti raggiungibili come luce successiva nella sweep.
Questo è ciò che viene eseguito l'intero heap per tenere traccia delle aree di heap che non sono la mia luce migliore.
Quindi quelle sarebbero aree libere e irraggiungibili dal mio ufficio e quindi possono essere ricollocate.
Ora prima hai detto che quando GC sta svolgendo il suo lavoro dobbiamo mettere in pausa l'applicazione qui,
possiamo vedere perché è necessario.
Ad esempio, se non mettiamo in pausa l'applicazione, dopo che il marcatore è lì forse alcuni nuovi
oggetti che vengono creati su questi nuovi oggetti ovviamente non saranno taggati come in questo modo in faccia si potrebbe pensare
erroneamente che siano anche irraggiungibili e si limitino a reclamare spazio occupato da loro.
Così come gli oggetti vengono recuperati qui.
Quindi il modo più semplice per risolvere questo problema è analizzare l'applicazione.
Vediamo anche un'altra semplice illustrazione consideriamo quest'area in cui il blocco mostrato in blu è considerato
localizzato mentre l'area grigia è considerata per la notte dopo l'esecuzione di GC.
Potremmo avere qualcosa di simile.
Ora le aree blu indicano oggetti vivi che sono la luce di Marble dalle beffe.
E piuttosto ciò che rimane sarebbe considerato come spazzatura.
Questo è libero di essere assegnato a nuovi oggetti.
Quindi nella dolce faccia tutte le aree grigie verrebbero registrate in alcune molto serie.
Il problema con questo algoritmo è che la memoria è frammentata.
Quella è l'area è divisa attraverso l'heap.
Quindi, se un nuovo oggetto deve essere visto, la sua base su nessuno degli airiest liberi è abbastanza grande da
poterlo contenere.
Quindi JVM semplicemente non può.
E guarda è basato sul fatto che siamo Jenrette e senza memoria o chi lo fa.
C'è un altro algoritmo chiamato Mark sweep compact qui i primi due passaggi sono identici a Montgomery.
Ma c'è un ulteriore passo compatto che quasi tutti vivono gli oggetti all'inizio della regione di memoria.
Quindi con questo non c'è alcun problema di frammentazione e c'è una maggiore possibilità di localizzare con successo oggetti
di grandi dimensioni.
Tuttavia il lato negativo di questo è che ci sarebbe un aumento del tempo di processo per lo spostamento degli oggetti
Dalila e anche l'aggiornamento di tutti i riferimenti agli oggetti corrispondenti che fanno riferimento a tali oggetti dal vivo poiché
i loro indirizzi di memoria non vengono aggiornati a causa di questo spostamento.
Quindi questo è il segno.
Quindi li compattiamo con algoritmo.
C'è anche una terza volta che Calmady può copiare, il che è molto simile all'approccio compatto di Mark sweep
in quanto si spostano anche come oggetti.
Ed ecco come funziona
Questo andrò da loro e in questo caso sto mantenendo due regioni di memoria aeb ha un po 'di memoria di
uso e anche un po' di memoria libera è completamente gratis ora dopo che DC è sbagliato.
Questo è come sarebbe.
Fondamentalmente ci sono due cose che accadono qui.
Per prima cosa dopo il finto congelamento tutti i miei oggetti sono segnati come prima.
Quindi impari come è solo la frammentazione che non è mostrata qui a causa di vincoli di spazio.
Ora, durante il congelamento della copia, gli oggetti vengono trasferiti nella regione, una cosa bella è che tutti li guardano in modo
contiguo nella regione B.
Quindi nessuna frammentazione come nel caso del secondo algoritmo, ma ho annuito in una pagina delle copie di Marchman
che copiavano che Frias può accadere simultaneamente.
Ma i Makris che sono come oggetti viventi vengono derisi.
Questo può anche essere spostato nella seconda regione.
Quindi a causa di questo l'applicazione post-time è scioccante.
E nella prossima lezione vedremo un esempio molto bello di copia di Marcom che coinvolge molte più cifre.
Quindi questi sono i tre algoritmi su o solo la seconda sfida perché sono solo un passatempo.
Ce n'è un altro che andrò da loro chiamato la raccolta generazionale che in realtà è stata impiegata
per citare gli atomi.
Quindi è un'altra tecnica, ma potrebbe utilizzare uno o più di questi algoritmi.
Ora vedremo come la generazione non raccoglie libri.
Grazie.