Chcę poznać wnętrze maszyny JVM, jej działanie i szczegóły, które mają znaczenie. Czy możesz zaproponować jakieś źródło lub najlepszą książkę do tego dostępną?Zrozumienie maszyny JVM Lepiej
Odpowiedz
Większość tego, co wiem o JVM pochodzi z dokumentów Sun. Mają kilka świetnych whitepapers na HotSpot VM: http://java.sun.com/javase/technologies/hotspot/index.jsp
pan wspomniał wydajności, więc może byłbyś zainteresowany docs wydajności Sun: http://java.sun.com/docs/performance/
na bardziej ręce na podejściu, spróbuj poszukać w Kaffe. To pokaże ci, co czyni maszynę wirtualną, ale niekoniecznie jak kod Java działa w JVM firmy Sun:
Kaffe to czysty realizacja pokój z maszyną wirtualną Java, a także związane z nimi bibliotek klas potrzebnych do zapewnienia środowiska wykonawczego Java środowisko.
A OpenJDK jest doskonałym miejscem, aby dowiedzieć się, jak Platforma Java jest realizowany: http://openjdk.java.net/
Oczywistym pierwszym wyborem jest The Java Virtual Machine Specification. Istnieje również The Wikipedia Page, który łączy się z dodatkowymi zasobami.
rozdziały z "Inside Java 2 Virtual Machine":
http://www.artima.com/insidejvm/ed2/index.html
"pod maską" artykułów Bill Venners
http://www.artima.com/underthehood/index.html
Istnieje również "Jasmin" An assember dla JVM, jeśli chcesz zabrudzić sobie ręce i spróbować programowania niskiego poziomu za pomocą JVM.
Jeśli motywacja jest, aby dowiedzieć się, jak napisać kod, który działa szybciej i zużywa mniej pamięci spec VM nie pomoże zbyt wiele.
Specyfikacja maszyny wirtualnej nie została zaprojektowana w celu dostarczenia informacji na ten temat. Została zaprojektowana tak, aby umożliwić programistom VM przybliżenie, w przybliżeniu, jak wdrożyć maszynę wirtualną.
Powiedziawszy, że nie może się z tym pogodzić.
Najlepszym sposobem, aby dowiedzieć się o problemach z prędkością/pamięcią, jest znacznie wyższy poziom, istnieje wiele książek, które pomogą Ci szybciej/szczuplejsze kodu.
Profiler jest nieocenionym narzędziem do testowania kodu, aby zobaczyć, co jest szybsze/zużywa mniej pamięci. Profil, zobacz, co jest wolne/zużywa dużo pamięci, zmień go, profil, zobacz, co zrobiły zmiany.
Poniżej znajduje się link do mojej dogłębnej oczywiście Java-line na platformie Udemy. Ma on cały obszerny rozdział na temat JVM z około 3 godzinami wideo. Obejmuje wszystko od Lifetime typu, obszarów danych runtime, refleksji, garbage collection, stosów stert i zestaw instrukcji. W książce online "Inside the Java 2 Virtual Machine" wymienionej w jednej z odpowiedzi znajduje się jeden z podręczników.
https://www.udemy.com/java-in-depth-become-a-complete-java-engineer/
Oto jeden dobry i krótkie wyjaśnienie hałdy, obiekty alokacji oraz zbierania śmieci, Understanding Memory Management. Możesz odkrywać więcej, zaczynając od tego miejsca.
- 1. Jak dodać moduł Javaagent do maszyny JVM bez zatrzymywania maszyny JVM?
- 2. W jaki sposób maszyny JVM implementują IdentityHashMap?
- 3. Jak sprawdzić użycie sterty uruchomionej maszyny JVM z wiersza poleceń?
- 4. W ramach działającej maszyny JVM, jak programowo określić opcje jvm używane podczas uruchamiania?
- 5. Zrozumienie deklaracji classpath Eclipse
- 6. Implementacja C# dla JVM
- 7. Java: Rdzenie dostępne dla JVM?
- 8. Jak przyspieszyć uruchamianie JVM?
- 9. Zrozumienie dispatch_async
- 10. lsof odpowiednik JVM?
- 11. Maszyny wirtualne
- 12. Drukuj Wszystkie Flagi JVM
- 13. Znajomość NUMA JVM
- 14. Jak podłączyć JMC (Java Mission Control) do zdalnej maszyny JVM w Ubuntu?
- 15. Jak określić domyślne argumenty maszyny JVM dla programów uruchamianych z środowiska Eclipse?
- 16. Czy mogę zrzucić bieżące zmienne stosu wątków z żywej maszyny JVM?
- 17. Wiązana aplikacja JavaFX działa z argumentami innymi niż angielski "Nie można uruchomić maszyny JVM"
- 18. Czy mogę dodać nowy certyfikat do magazynu kluczy bez restartowania maszyny JVM?
- 19. Nieprzenikniony błąd spowodowany przez wyłączenie wątku maszyny JVM, ponieważ w systemie ActorSystem
- 20. Czy istnieje przenośny sposób sprawdzenia, ile plików JVM ma otworzyć z wnętrza maszyny wirtualnej?
- 21. Doświadczenie przejścia na 64-bitową maszynę JVM
- 22. GWT kompiluje awarie JVM
- 23. Łańcuch sygnałów JVM SIGPIPE
- 24. Zrozumienie prototypów JavaScript
- 25. JVM okresowo zawiesza się
- 26. Jak LongAdder działa lepiej niż AtomicLong
- 27. Używanie maszyny wirtualnej HipHop w systemie Windows
- 28. Wyłączanie maszyny wirtualnej zwraca wszystkie stany maszyny wirtualnej jako nieznane.
- 29. Uzyskaj czas przestoju maszyny
- 30. Ustaw czas maszyny C#