Jeśli zauważysz, jak debugować awarię jvm na spersonalizowanym komputerze, mam nadzieję, że ten artykuł pomoże Ci go rozwiązać.
Zatwierdzono: Fortect
Jestem bardzo zdezorientowany i nie wiem jak, aby podszedł i rozwiązał mój indywidualny problem. Oferuję prosty fragment kodu Java, który powoduje awarię JVM:
## Środowisko wykonawcze Java napotkało błąd krytyczny:## SIGSEGV (0xb) przy obliczaniu = 0x00000001057ce9d4, pid = 10727, tid równa się 18947## Plan JRE: Java SE Runtime Environment (tm) (8.0_73-b02) (kompilacja 1.8.0_73-b02)Wirtualna maszyna Java: Serwer HotSpot (TM) 64-bitowa wirtualna maszyna Java (25,73 b02, tryb mieszany, bsd-amd64, skompaktowana)# Problematyczna rama V:# [libjvm.dylib + 0x3ce9d4] PhaseIdealLoop :: idom_no_update (Węzeł *) const + 0x12## Nie udało się napisać zrzutu pamięci. Repozytoria podstawowe są niekompetentne. Aby umożliwić dezinstalację jądra, spróbuj ulimit -c Never Ending przed ponownym uruchomieniem Javy.## Jeśli chciałbyś zaproponować raport o błędzie, odwiedź:# Http://bugreport.java.com/bugreport/crash.jsp#--------------- PRZEWÓD ---------------Bieżący wątek (0x00007feeef003800): demon JavaThread "C2 CompilerThread0" [_thread_in_native, id = 18947, stos (0x0000700000ec4000,0x0000700000fc4000)]siginfo: si_signo: (SIGSEGV), si_code: 1 Si_addr: (segv_maperr), 0x00000000000000008
Nie mam pojęcia, jak rozwiązać ten problem. Program jest dość prosty, oprócz większości zadań wyzwalania opartych na wiadomościach otrzymuje nową wiadomość od Kafki. Kiedy dodam dwie różne kariery, każdy program otrzyma od 900 do 1500 ostrzeżeń o awarii. Wszystkie posty są dokładnie takie same, a program nie używa żadnych najnowszych elementów JNI (wykorzystywane kolekcje stron trzecich również nie używają JNI, jak wcześniej informowano).
Cieszę się, że nigdy nie miałem tego cierpiącego problemu, ale mogę to lubię To jest twój sposób na ustalenie, na czym polega problem. Posiadam już drugą wersję JVM (Java 8.0_66, 8.0_73-b02 w połączeniu z 8.0_74-b02). Więc co mogę zrobić? Dziękuję !
więc...# Wersja JRE: środowisko wykonawcze java OS (tm) (8.0_73-b02) (kompilacja 1.8.0_73-b02)# Wirtualna maszyna Java: Serwer HotSpot (TM) 64-bitowa wirtualna maszyna Java (25.73 b02, tryb mieszany, bsd-amd64, skrót oh)# Problematyczna rama V:# [libjvm.dylib + 0x3ce9d4]...
EDYCJA (2): Zaktualizowałem moją wersję Java do 8.0_74. Błąd nadal istnieje :(.
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
## Środowisko wykonawcze Java napotkało błąd krytyczny:## SIGSEGV (0xb) na pc = 0x00000001073cdef8, pid jest równy 11227, tid = 19715## Wersja JRE: odtwarzanie java OS (tm) (8.0_74-b02) (build 1.8.0_74-b02)# Maszyna wirtualna: Java Java HotSpot (TM) 64-bitowa maszyna wirtualna serwera (25,74-b02 tryb mieszany bsd-amd64, skrócone oops)# Problematyczne ramy:# V [libjvm. ... ... dylib + 0x3cdef8] PhaseIdealLoop :: idom_no_update (Node *) const + 0x12## Błąd podczas pisania zrzutu treści. Zrzuty jądra są wyłączone. Aby dostroić recykling rdzenia, spróbuj ulimit -c unlimited przed ponownym uruchomieniem Javy## Jeśli chcesz zgłosić błąd, odwiedź:# Http://bugreport.java.com/bugreport/crash.jsp#--------------- PRZEWÓD ---------------Bieżący sznurek bezpieczny (0x00007f89e481c800): demon JavaThread „C2 CompilerThread1” [_thread_in_native, identyfikator równa się 19715, stos (0x000070000104a000,0x000070000114a000)]siginfo: si_signo: 11 (SIGSEGV), si_code: pięć różnych (SEGV_MAPERR), si_addr: 0x000000000000008
Tak więc w końcu zrzuciłem cały rdzeń Verizon i załadowałem go do Java VisualVM (nie mogłem skorzystać z rozwiązania zorganizowanego przez DROY, ponieważ wywołanie jmap spowodowało kolejny błąd: „Błąd dodawania do głównej listy: nie można podłączyć do core .file “”). VisualVM wygenerował plonk wątków z wynikami:
Temat 30239 "Keep-Alive-Timer": (stan = ZABLOKOWANY) w java.lang.Thread.Method) sen (natywny dla sun.net.www.http.KeepAliveCache.run (KeepAliveCache.java: 172) pod adresem java.lang.Thread.run (Thread.java:745)Wątek 29699 (stan "threaddeathwatcher-4-1": = ZABLOKOWANY) po prostu przechodząc do java.lang.Thread.sleep (metoda natywna) io at.netty.util.ThreadDeathWatcher $ Watcher.run (ThreadDeathWatcher.java:137) dostępne na io.netty.util.concurrent.DefaultThreadFactory $ DefaultRunnableDecorator.run (DefaultThreadFactory.java:137) dostępny pod adresem java.lang.Thread.run (Thread.java:745)Strumień 26635 (stan „nioeventloopgroup-3-1”: oznacza IN_NATIVE) w sun.nio.ch.KQueueArrayWrapper.Method) kevent0 (natywny wywołany przez sun.nio.ch.KQueueArrayWrapper.poll (KQueueArrayWrapper.java: 198) na sun.nio.ch.KQueueSelectorImpl.doSelect (KQueueSelectorImpl.java:117) z sun.nio.ch.SelectorImpl.lockAndDoSelect (SelectorImpl.java:86) - Naprawiono <0x00000006c049ec98> Io (a.netty.channel.nio. Selectedselectionkeyset) - bezpieczny <0x00000006c049ec88> (java.util.Collections $ UnmodifiableSet) 2.zablokowany <0x00000006c049ecb8> (sun.nio.ch.KQueueSelectorImpl) Na sun.nio.ch.SelectorImpl.select (SelectorImpl.java:97) dostępne na io.netty.channel.nio.NioEventLoop.select (NioEventLoop.java:622) na io.netty.channel.nio.NioEventLoop.run (NioEventLoop.java:310) w io.netty.util.concurrent.SingleThreadEventExecutor $ 2.run (SingleThreadEventExecutor.java:110) tylko z io.netty.util.concurrent.DefaultThreadFactory $ DefaultRunnableDecorator.run (DefaultThreadFactory.java:137) znalezione na java.lang.Thread.run (Thread.java:745)Wątek 29187 "pool-3-thread-1": (stan = ZABLOKOWANY) tylko w sun.misc.Unsafe.park (metoda natywna) Ziarna kawy w.util.concurrent.locks.LockSupport.park (LockSupport. Java: 175) znajduje się na java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.await (AbstractQueuedSynchronizer.java:2039) kawa smakowa at.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442) kafka at.consumer.ConsumerIterator.makeNext (ConsumerIterator.scala: 63) wewnątrz kafka.consumer.ConsumerIterator.makeNext (ConsumerIterator.scala: 33) w kafka.utils.IteratorTemplate.może byćObliczDalej (IteratorTemplate.scala: 66) w kafka.utils.IteratorTemplate.hasNext (IteratorTemplate.scala: 58) cyberprzestrzeń pod adresem.sosse.common.messaging.DefaultHandler.doRun (DefaultHandler.java:22) autor: com.sosse.common.concurrency.DefaultRunnable.run (DefaultRunnable.java:11) pod adresem java.util.concurrent.Executors $ RunnableAdapter.call (Executors. java: 511) pod adresem java.util.concurrent.FutureTask.run (FutureTask.java:266) Gourmet Cafe pod adresem.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. Java: 1142) pod adresem java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) pod adresem java.lang.Thread.run (Thread.java:745)Wątek 28675 "pool-4-thread-1": (stan, awaryjny ZABLOKOWANY) przez java.lang.Thread.sleep (metoda natywna) io at.netty.util.HashedWheelTimer $ Worker.waitForNextTick (HashedWheelTimer.java:461) w io.netty.util.HashedWheelTimer $ Worker.run (HashedWheelTimer. java: 360) przez java.lang.Thread.run (Thread.java:745)Temat 28163 „ConsumerFetcherThread-analytics-group_Philipp.local-1458441725398-581eabc3-0-0”: (stan odpowiada in_native) wokół sun.nio.ch.Net.Metoda) ankieta (natywna dla sun.nio.ch.SocketChannelImpl.poll (SocketChannelImpl.java:954) lub zablokowany <0x00000006c056d538> (java.lang.Object) at sun.nio.ch.SocketAdaptor $ SocketInputStream.read (SocketAdaptor.java:204) - prywatny <0x00000006c056d5b8> Java (a.lang.Object) sun.nio.ch.ChannelInputStream.read (ChannelInputStream.java:103) - Naprawiono <0x00000006c056d5f8> (sun.nio.ch.SocketAdaptor $ SocketInputStream) Na java.nio.channels.Channels $ ReadableByteChannelImpl.read (Channels.java:385) - regenerowany (<0x00000006c056d618> java.lang.Object) Pod kafka.utils.Utils rrr .read (Utils.scala: 380) kafka at.network.BoundedByteBufferReceive.readFrom (BoundedByteBufferReceive.scala: 54) kafka at.network.Receive class.readCompletely (Transmission.scala: 56) tylko to obejmuje kafka.network.BoundedByteBufferReceive.readCompletely (BoundedByteBufferReceive.scala: 29) kafka at.network.BlockingChannel.receive (BlockingChannel.scala: 111) kafka at.consumer.SimpleConsumer.liftedTree1 rrr 1 (SimpleConsumer.scala: 71) Pod kafka.consumer.SimpleConsumer.kafka ? rrr konsument $ SimpleConsumer $$ sendRequest (SimpleConsumer.scala: 68) - bezpieczny <0x00000006c056d6e0> (java.lang.Object) Na stronie kafka.consumer.SimpleConsu
Przyspiesz teraz wydajność swojego komputera dzięki temu prostemu pobieraniu.
Sprawdź cały plik tekstowy awarii. Plik z podpisem listu. dump może pokazać, które alokacje zapamiętywania nie powiodły się.Sprawdź rozmiar pliku binarnego smashup. Gdy konkretna JRockit JVM ulega awarii, ta sytuacja generuje dowolny plik binarny awarii (również .core.
Niezależnie od tego, jaka diagnostyka sprzętu działa idealnie dla Twojego cennego systemu, wyznacz jej cel. Ponieważ awarie JVM są rzadkie, chciałbym opowiedzieć o nich Sunowi. Można to zrobić dodatkowo w ich systemie śledzenia błędów. Użyj podkategorii Ding Java SE, jvm_exact lub jit.
Otwórz
/ bin / uruchom. softball bat na Windows i /bin/run.sh na Linuxie dotyczące edycji. Aby ukryć raporty z dziennika awarii maszyny JVM, skomentuj odpowiedni wiersz, który wskazuje, gdzie awaria maszyny JVM jest analizowana. Przykład: #ERROR_FILE = "- XX: ErrorFile = $ PA_HOME / log / java_error% p.