Kolektor JNI i czyszczenia pamięci
Ten opis wyjaśnia, w jaki sposób implementacja JNI zapewnia dostęp do obiektów przez moduł czyszczenia pamięci (Garbage Collector-GC).
Ogólne informacje na temat czyszczenia pamięci zawiera sekcja Zarządzanie pamięcią.
Aby gromadzić nieosiągalne obiekty, GC musi wiedzieć, kiedy obiekty Java są przywoływane przez kod rodzimy. Implementacja JNI używa "zestawów głównych" w celu zapewnienia, że obiekty mogą być osiągane. Zestaw główny to zestaw bezpośrednich, zwykle przemieszczalnych, odwołań do obiektów, które są śledzone przez GC.
Istnieje kilka typów zestawu głównego. Unia wszystkich zestawów głównych udostępnia początkowy zestaw obiektów dla fazy znacznika czyszczenia pamięci. Rozpoczynając od tego zbioru początkowego, czyszczenie pamięci powoduje przeglądanie całego wykresu odniesienia obiektu. Wszystko, co pozostaje nieoznakowane, to nieosiągalne śmieci. (Opis ten jest nadmiernym uproszczeniem, gdy rozważane są możliwości osiągania i słabych odniesień. Patrz sekcja Przydzielenie sterty w dokumentacji użytkownika OpenJ9 i specyfikacji maszyny JVM.