Prawdziwie słabe odniesienia, nie, jeszcze nie (ale twórcy przeglądarek przyglądają się temu tematowi). Ale oto pomysł, jak symulować słabe odniesienia.
Możesz zbudować pamięć podręczną, przez którą przepuszczasz swoje obiekty. Kiedy obiekt jest przechowywany, pamięć podręczna przechowuje przewidywanie, ile pamięci zajmie obiekt. W przypadku niektórych pozycji, takich jak przechowywanie obrazów, jest to proste do rozwiązania. Dla innych byłoby to trudniejsze.
Kiedy potrzebujesz obiektu, poproś o niego pamięć podręczną. Jeśli pamięć podręczna zawiera obiekt, jest on zwracany. Jeśli go tam nie ma, element jest generowany, przechowywany, a następnie zwracany.
Słabe referencje są symulowane przez elementy usuwające pamięć podręczną, gdy całkowita ilość przewidywanej pamięci osiągnie określony poziom. Przewiduje, które elementy są najmniej używane, na podstawie tego, jak często są one odzyskiwane, ważone według tego, jak dawno zostały wyjęte. Koszt „kalkulacji” można również dodać, jeśli kod, który tworzy element, jest przekazywany do pamięci podręcznej jako zamknięcie. Umożliwiłoby to przechowywanie w pamięci podręcznej przedmiotów, które są bardzo drogie w budowie lub generowaniu.
Algorytm usuwania jest kluczowy, ponieważ jeśli się pomylisz, możesz w końcu usunąć najpopularniejsze elementy. To spowodowałoby straszne wyniki.
Tak długo, jak pamięć podręczna jest jedynym obiektem z trwałymi odniesieniami do przechowywanych obiektów, powyższy system powinien działać całkiem dobrze jako alternatywa dla prawdziwych słabych odniesień.