Jupiter JVM

Jupiter JVM
Ostateczne wydanie
1.0.0 beta / 15 lipca 2002 ( 15.07.2002 )
Typ Maszyna wirtualna Java
Licencja GPL
Strona internetowa www.eecg.toronto.edu/jupiter _ _ _ _

Jupiter JVM to wirtualna maszyna Java o otwartym kodzie źródłowym , która została opracowana jako praca magisterska z myślą o modułowości i rozszerzalności. Wykorzystuje moduł wyrzucania elementów bezużytecznych Boehm i GNU Classpath . Główne aspekty projektu maszyny wirtualnej Jupiter można uprościć jako:

  • Lokalizacja pamięci — obiekty są przydzielane na stercie z niewielkim lub żadnym uwzględnieniem lokalizacji. Chociaż takie podejście może być odpowiednie dla procesorów jednoprocesorowych lub małych SMP, jest mało prawdopodobne, aby działało dobrze w klastrze stacji roboczych, w których zdalny dostęp do pamięci jest o jeden lub dwa rzędy wielkości wolniejszy niż dostęp do pamięci lokalnej.
  • Równoległe wyrzucanie elementów bezużytecznych — wyrzucanie elementów bezużytecznych może zająć znaczną ilość czasu aplikacji. Zwykle maszyny JVM wykorzystują moduły wyrzucania elementów bezużytecznych typu „stop-the-world”, w których wątki programu są zatrzymywane podczas usuwania elementów bezużytecznych. Takie podejście nie zadziała w przypadku dużej liczby procesorów z dwóch powodów. Po pierwsze, koszt „zatrzymania świata” jest znacznie wyższy, gdy liczba procesorów jest duża. Po drugie, użycie pojedynczego wątku do zbierania śmieci skutkuje niedopuszczalnie dużym ułamkiem sekwencyjnym dla dowolnej aplikacji.
  • Model spójności pamięci — aby osiągnąć skalowalną wydajność na wielu procesorach, ważne jest wykorzystanie „zrelaksowanego” modelu pamięci Java . Obecnie żadna JVM nie implementuje wiernie JMM, aw rzeczywistości wiele implementuje ją niepoprawnie, co prowadzi do braku spójności i utraty możliwości optymalizacji. Specyfikacja JMM została również zmieniona w 2007 roku.
  • Wydajne wątki i synchronizacja — w przypadku wielu procesorów niezwykle ważne jest zapewnienie wydajnej obsługi wątków i dobrze skalowalnych mechanizmów synchronizacji.

Zobacz też

Linki zewnętrzne