W Javie pamięć przydzielona przez bufory nio jest zwalniana za pomocą instancji sun.misc.Cleaner, niektórych specjalnych odwołań fantomowych, które są bardziej wydajne niż finalizacja obiektu.Bezpośrednia pamięć Java: używanie sun.misc.Cleaner w niestandardowych klasach
Czy ten czystszy mechanizm został zakodowany na stałe w JVM tylko dla podklas bezpośrednich buforów, czy też można użyć czyszczących w komponentach niestandardowych (na przykład, pisząc niestandardowy bufor bezpośredniego bajtu)?
Tutaj nie mówię o odzyskaniu czystszego pola istniejącego bufora bezpośredniego nio. Nie mówię też o ręcznym zwalnianiu pamięci. Chodzi o napisanie nowej klasy, która przydziela pamięć bezpośrednią i czyści ją sprawnie i automatycznie przez mechanizm odśmiecania.
Nie powinieneś używać niczego w sun.misc. * Dla czegokolwiek, a dokumentacja JDK już tak mówi. – EJP
Wiem, a także nie powinienem palić;) Dobrze, że autorzy bibliotek o wysokiej wydajności opartych na sun.misc.Unsafe pominęli tę regułę. –
Antoine, można tego uniknąć. Tylko sun.misc.Cleaner przetrwa, spojrzy na JEP 260 i przetestuje swój kod z Javą 1.9, zobaczysz co mamy na myśli. Mój pomocnik deallocator obsługuje Javę 1.9 i nie używa klas sun.misc z wyjątkiem sun.misc.Cleaner. – gouessej