Wyznacz miejsce przekierowania żywych obiektów. Śledź wskaźniki wolnego miejsca i żywych obiektów i zainicjuj oba na początek sterty. Jeśli wskaźnik żywych obiektów wskazuje żywy obiekt, zaktualizuj przekierowujący wskaźnik tego obiektu na bieżącą wartość wskaźnika wolnego miejsca i zwiększ wskaźnik wolnego miejsca zgodnie z wielkością obiektu. Przenieś wskaźnik żywych obiektów do następnego obiektu Kończy się, gdy wskaźnik żywych obiektów dojdzie do końca sterty. Aktualizuj wszystkie wskaźniki Dla każdego żywego obiektu, aktualizuj jego wskaźniki zgodnie z przekierowującymi wskaźnikami obiektu na który wskazują. Przesuń obiekty Dla każdego żywego obiektu, przenieść jego dane na jego przekierowywane położenia.

Ten algorytm ma złożoność O (n) od wielkości sterty; ma niższą złożoność niż podejście oparte na tablicy, ale w metodzie z użyciem tabeli n jest wielkością jedynie użytego miejsca a nie całej sterty jak w algorytmie LISP2. Jednak algorytm LISP2 jest prostszy do implementacji.

Przypisy

Kategoria:Zarządzanie pamięcią Kategoria:Algorytmy