JNI e Garbage Collector

Questa descrizione spiega come l'implementazione JNI garantisce che gli oggetti possano essere raggiunti dal GC (Garbage Collector).

Per informazioni generali sulla raccolta dati inutilizzati, consultare Gestione memoria.

Per raccogliere oggetti non raggiungibili, la raccolta dati inutilizzati deve sapere quando il codice nativo fa riferimento agli oggetti Java. L'implementazione JNI utilizza "serie root" per garantire che gli oggetti possano essere raggiunti. Una serie root è una serie di riferimenti di oggetti diretti, generalmente rilocabili, tracciabili dalla raccolta dati inutilizzati.

Esistono diversi tipi di serie root. L'unione di tutte le serie root fornisce la serie iniziale di oggetti per una fase di contrassegno GC. A partire da questa serie iniziale, il GC attraversa l'intero grafico di riferimento dell'oggetto. Tutto ciò che rimane non contrassegnato è spazzatura irraggiungibile. (Questa descrizione è una semplificazione eccessiva quando si considera la raggiungibilità e i riferimenti deboli. Consultare Assegnazione heap nella documentazione utenteOpenJ9 e la specifica JVM.)