Sok (JVM)
JUICE to eksperymentalna wirtualna maszyna Java ME napisana w języku C zgodnie ze specyfikacjami firmy Sun Microsystems . Juice JVM, zaprojektowana dla Java w czasie rzeczywistym, została specjalnie opracowana do pracy w systemie operacyjnym NUXI. Najbardziej istotne cechy Juice są związane ze strukturą pamięci sterty, polityką alokacji obiektów i używanym modułem wyrzucania elementów bezużytecznych .
Pamięć sterty
W Juice cała dostępna pamięć sterty jest dzielona na „kawałki” o ustalonym rozmiarze. Stosowaną jednostką pamięci jest „słowo d” (co oznacza „podwójne słowo”). Rzeczywisty domyślny rozmiar porcji jest ustalony na 64 d-słowa. Kawałki wolnej pamięci są zorganizowane w połączoną listę, podczas gdy kawałki zajmowane przez obiekty Java są połączone ze sobą poprzez hierarchiczną strukturę w sposób przypominający reprezentację systemu plików UNIX.
Polityka alokacji obiektów w czasie rzeczywistym
Zasady alokacji obiektów w Juice są ściśle powiązane ze strukturą używaną do reprezentowania pamięci sterty. Dzięki tej strukturze możliwe staje się przydzielanie (i zwalnianie) obiektów Java w czasie zależnym tylko od rozmiaru samego obiektu (przewidywalność).
Odśmiecacz śmieci typu pay-per-use
Proponowany moduł wyrzucania elementów bezużytecznych jest oparty na nie kopiującym kolektorze śledzenia, który wykonuje odzyskiwanie pamięci tylko wtedy, gdy musi zostać przydzielony nowy obiekt. Nazwa modułu wyrzucania elementów bezużytecznych wynika z tego, że koszt płacony przez mutator, pod względem zmarnowanego czasu na wykonanie modułu zbierającego, jest proporcjonalny do rozmiaru obiektu do przydzielenia.
Autorski
Garbage Collector, zarządzanie pamięcią sterty: Corrado Santoro , Roberto Aloi
Cała reszta: Corrado Santoro
- A. Corsaro, C. Santoro. Optimising JVM Object Operations to Improve WCET Predictability , artykuł zaprezentowany na 4th International Workshop on Worst-Case Execution Time , 2004.
- A. Corsaro, C. Santoro. Natywny interfejs C++ dla interpretowanych maszyn JVM. W 1. Intl. Warsztat JTRES (JTRES'03). LNCS 2889, Springer, 2003.
- R. Aloi. Zarządzanie pamięcią i wyrzucanie elementów bezużytecznych w języku Java w czasie rzeczywistym (włoski) [ stały martwy link ] , praca magisterska z inżynierii komputerowej (Uniwersytet w Katanii, Włochy), 2005.