Pracuję nad JVM od lat i bardzo rzadko miałem awarię JVM ... to było około 6 miesięcy temu.
Od tego czasu doświadczyłem około 5 awarii JVM wynikających z 2 wad JVM. Rozwiązanie firmy Oracle zawsze było takie samo ... aktualizacja.
Każde uaktualnienie odbywa się zawsze do i od momentu wydania ... tzn. Najnowszą sugestią Oracle (po potwierdzeniu, że naprawili błąd) było uaktualnienie z wersji 1.6u20 do 1.6u26.
W jaki sposób powinienem aktualizować mniejsze wersje JVM?
Czy to duże wydarzenie, które wymaga ogromnej ilości testów regresji, czy są to bezpieczne aktualizacje, które należy objąć?
Odpowiedzi:
To nie powinno być wielkim wydarzeniem uaktualnić wersję moll, a ja nigdy nie doświadczyły problemów.
To powiedziawszy, niesławne problemy z Javą 7 są nieco przerażające, a nawet pomimo tego, że była to poważna aktualizacja wersji, te specyficzne problemy pojawiły się w rzeczywistości w Javie 6 ~ u20 i być może zostały naprawione w wersji u25. Pojawiły się one tylko dlatego, że Java 7 ma domyślnie włączone flagi optymalizacji, których Java 6 nie ma. Gdybyście użyli tych flag w Javie 6, moglibyście doświadczyć nie tylko awarii, ale także nieprawidłowego wykonania pętli , czyli błędów w obliczeniach, z powodu niewielkiej aktualizacji z 6u19 do 6u20 (w przybliżeniu).
Faktem jest, że nikt nie gwarantuje, że zaktualizowana wersja w ogóle będzie działać. JVM, jego środowisko (komputer, system operacyjny) i twoja aplikacja, wszystkie one współdziałają ze sobą, i aby mieć całkowitą pewność, że cały ogromny zbiór rzeczy dobrze się ze sobą współgra, powinieneś wykonać ogromną ilość testów regresji.
Moje podejście do aktualizacji JVM jest podobne do wszystkich aktualizacji: chyba że mam konkretną potrzebę aktualizacji i jeśli nie jest to krytyczna aktualizacja zabezpieczeń, poczekam chwilę i przeczytam doświadczenia innych ludzi w Internecie. Jeśli nikt nie narzeka w ciągu około miesiąca, prawdopodobnie uaktualnienie jest bezpieczne.
źródło
Z mojego doświadczenia z korporacyjnymi aplikacjami Java korzyści wynikające z wprowadzenia niewielkich aktualizacji JVM przeważają nad powiązanym ryzykiem.
Jedną z korzyści jest to, że drobne aktualizacje prawie zawsze zawierają poprawki błędów . Zastosowanie tych aktualizacji może faktycznie poprawić stabilność środowisk produkcyjnych. Wystąpiły awarie JVM, w których analiza pierwotnej przyczyny ujawnia, że defekt został już zidentyfikowany i naprawiony w niewielkiej aktualizacji JVM.
Kolejną korzyścią jest to, że drobne aktualizacje często zawierają ulepszenia wydajności . Jednak, jak zauważył @Joonas, ryzykowne jest używanie niesprawdzonych lub eksperymentalnych flag wydajności w każdej aktualizacji (dużej lub mniejszej) bez istotnych testów.
Podobnie jak w przypadku każdej zmiany, najważniejsze jest, aby postępować odpowiedzialnie . Oto kilka praktyk, które stosuję podczas planowania aktualizacji JVM:
źródło
Wokół Oracle Java 1.6 u20 wprowadzono kontrolę bezpieczeństwa ostrzegającą przed „Mieszanym kodem”, co wpłynęło na naszą aplikację dla niektórych użytkowników powodujących awarię. Było to niewielkie ulepszenie i miało duży wpływ na produkcję.
Zawsze bądź przygotowany na wycofanie.
źródło