컴퓨터에서 jvm 충돌을 디버깅하는 방법을 알고 있다면 이 특정 문서가 문제를 해결하는 데 도움이 되기를 바랍니다.
승인됨: Fortect
저는 매우 오도되어 개인 문제에 접근하고 해결하는 방법을 모릅니다. JVM 충돌을 일으키는 사용자 친화적인 Java 코드 조각이 있습니다.
<사전> <코드> ## Java 런타임 읽기 치명적인 오류:## PC의 SIGSEGV(0xb)는 0x00000001057ce9d4, pid = 10727, tid = 18947을 의미합니다.## JRE 보험 정책: Java SE Runtime Environment(tm) (8.0_73-b02) (빌드 1.8.0_73-b02)# 자바 가상 머신: HotSpot(TM) 서버 64비트 자바 가상 머신(25.73-b02, 혼합 모드, bsd-amd64, 접힌 오)# 문제가 있는 V-프레임:# [libjvm.dylib + 0x3ce9d4] PhaseIdealLoop :: idom_no_update (노드 *) const + 0x12## 코어 덤프를 버전화하지 못했습니다. 기본 리포지토리가 비활성화되었습니다. 커널 제거를 용이하게 하려면 Java를 복원하기 전에 ulimit -c unlimited를 시도하십시오.## 버그 보고서 하나를 제안하려면 다음을 방문하세요.# http://bugreport.java.com/bugreport/crash.jsp#————— 와이어 —————조심스럽게 현재(0x00007feeef003800): JavaThread 데몬 “C2 CompilerThread0” [_thread_in_native, id is equal to 18947, stack (0x0000700000ec4000,0x0000700000fc4000)]siginfo: si_signo: 18 (SIGSEGV), si_code: # 1 Si_addr: (segv_maperr), 0x00000000000000008
문제를 해결하는 방법을 확실히 모르겠습니다. 모델은 매우 간단하며 메시지 기반 트리거 요구 사항 외에도 Kafka에서 시작하는 메시지를 수신합니다. 두 개의 다른 작업을 추가하면 각 회사는 이상 종료 후 900~1500개의 경고를 받습니다. 모든 게시물은 정확히 동일하며 이 프로그램은 새로운 JNI 솔루션을 사용하지 않습니다.
나는 이 고통스러운 문제를 겪지 않았지만, 각각에 대해 다음과 같이 하고 싶습니다. 나는 이미 두 번째 JVM 버전(Java 8.0_66, 8.0_74-b02와 8.0_73-b02 조인트)을 활용했습니다. 그래서 내가 뭘 할 수 있는데? 감사 해요 !
그래서 ...# JRE 버전: 한 잔의 커피 OS 런타임(tm) (8.0_73-b02) (빌드 1.8.0_73-b02)# 자바 가상 머신: HotSpot(TM) 서버 64비트 자바 가상 머신(25.73-b02, 혼합 모드, bsd-amd64, 압축 oh)# 문제가 있는 V-프레임:# [libjvm.dylib + 0x3ce9d4]...
편집 (2): Java 버전을 8.0_74로 재구성했습니다. 오류는 거의 확실히 여전히 존재합니다 :(.
승인됨: Fortect
Fortect은 세계에서 가장 인기 있고 효과적인 PC 수리 도구입니다. 수백만 명의 사람들이 시스템을 빠르고 원활하며 오류 없이 실행하도록 신뢰합니다. 간단한 사용자 인터페이스와 강력한 검색 엔진을 갖춘 Fortect은 시스템 불안정 및 보안 문제부터 메모리 관리 및 성능 병목 현상에 이르기까지 광범위한 Windows 문제를 빠르게 찾아 수정합니다.
<코드> ## 자바 런타임에 치명적인 오류가 발생했습니다:## PC에서 SIGSEGV(0xb) = 0x00000001073cdef8, pid = 11227, tid는 19715를 의미## JRE 버전: 자바 OS 런타임(tm) (8.0_74-b02) (빌드 1.8.0_74-b02)# VM: Java Java HotSpot(TM) 64비트 서버 VM(25.74-b02 혼합 모드 bsd-amd64, 단축된 oops)# 문제가 있는 프레임워크:# V [libjvm. ... ... dylib + 0x3cdef8] PhaseIdealLoop :: idom_no_update (노드 *) const + 0x12## 바디 덤프를 작성하는 동안 오류가 발생했습니다. 커널 덤프가 비활성화되었을 수 있습니다. 코어 덤프를 조정하려면 Java를 다시 시작하기 전에 ulimit -c unlimited를 검사하십시오.## 버그 보고서를 제출하려면 다음을 방문하세요.# http://bugreport.java.com/bugreport/crash.jsp#--------------- 와이어 ---------------현재 안전한 스레드(0x00007f89e481c800): JavaThread 데몬 "C2 CompilerThread1" [_thread_in_native, id = 19715, 파일(0x000070000104a000,0x0000700001)14a000서명 정보: si_signo: 11(SIGSEGV), si_code: 5(SEGV_MAPERR), si_addr: 0x000000000000008
그래서 마침내 Verizon을 덤프하고 Java VisualVM에 로드했습니다(jmap 호출이 또 다른 오류를 일으키기 때문에 DROY에서 구성한 솔루션을 사용할 수 없었습니다. “메인 목록에 대한 설정 오류: 키에 연결할 수 없습니다. . 파일 “”). 스레드 덤프가 VisualVM에서 얻은 결과:
주제 30239 "Keep-Alive-Timer": (상태 = 잠김) 단지 java.lang.Thread.Method에서) 절전 모드(sun.net.www.http.KeepAliveCache.run 기본(KeepAliveCache.java: 172) java.lang.Thread.run에서 (Thread.java:745)스레드 29699(상태 "threaddeathwatcher-4-1": 잠김을 의미) java.lang.Thread.sleep(네이티브 메소드)로 이동하여 io at.netty.util.ThreadDeathWatcher? rrr Watcher.run(ThreadDeathWatcher.java:137) io.netty.util.concurrent.DefaultThreadFactory $ DefaultRunnableDecorator.run을 통해 (DefaultThreadFactory.java:137) java.lang.Thread.run에서 (Thread.java:745)스트림 26635(상태 'nioeventloopgroup-3-1': IN_NATIVE를 의미함) sun.nio.ch.KQueueArrayWrapper.Method에서) kevent0(sun.nio.ch.KQueueArrayWrapper.poll에서 기본 제공(KQueueArrayWrapper.java: 198) sun.nio.ch.KQueueSelectorImpl.doSelect에서 (KQueueSelectorImpl.java:117) sun.nio.ch.SelectorImpl.lockAndDoSelect 사용(SelectorImpl.java:86) - <0x00000006c049ec98> Io 고정(a.netty.channel.nio.Selectedselectionkeyset) - 저위험 <0x00000006c049ec88> (java.util.Collections $ UnmodifiableSet) 2.잠김 <0x00000006c049ecb8>(sun.nio.ch.KQueueSelectorImpl) sun.nio.ch.SelectorImpl.select에서 (SelectorImpl.java:97) io.netty.channel.nio.NioEventLoop.select에서 사용 가능(NioEventLoop.java:622) io.netty.channel.nio.NioEventLoop.run에서 (NioEventLoop.java:310) io.netty.util.concurrent.SingleThreadEventExecutor $ 2.run에서 (SingleThreadEventExecutor.java:110) io.netty.util.concurrent.DefaultThreadFactory $ DefaultRunnableDecorator.run에서만 (DefaultThreadFactory.java:137) java.lang.Thread.run(Thread.java:745)에서 찾을 수 있습니다.스레드 29187 "pool-3-thread-1": (상태 = 잠김) sun.misc.Unsafe.park 주변(네이티브 메서드) 커피 콩 at.util.concurrent.locks.LockSupport.park (LockSupport. Java: 175) java.util.concurrent.locks.AbstractQueuedSynchronizer에서 ConditionObject.await 자금(AbstractQueuedSynchronizer.java:2039) java at.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) kafka at.consumer.ConsumerIterator.makeNext (ConsumerIterator.scala: 63) kafka.consumer.ConsumerIterator.makeNext 내부(ConsumerIterator.scala: 33) kafka.utils.IteratorTemplate.maybeComputeNext에서 가져옴(IteratorTemplate.scala: 66) kafka.utils.IteratorTemplate.hasNext 근처(IteratorTemplate.scala: 58) 인터넷 정보 at.sosse.common.messaging.DefaultHandler.doRun (DefaultHandler.java:22) 작성자: com.sosse.common.concurrency.DefaultRunnable.run(DefaultRunnable.java:11) at java.util.concurrent.Executors $ RunnableAdapter.call (Executors. 맛을 낸 커피: 511) java.util.concurrent.FutureTask.run에서 (FutureTask.java:266) Gourmet Cafe at.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. Java: 1142) java.util.concurrent.ThreadPoolExecutor $ Worker.run에서 (ThreadPoolExecutor.java:617) 여기 java.lang.Thread.run에서 (Thread.java:745)스레드 28675 "pool-4-thread-1": (상태, 긴급 차단됨) java.lang.Thread.sleep(네이티브 메소드)를 통해 io at.netty.util.HashedWheelTimer $ Worker.waitForNextTick(HashedWheelTimer.java:461) at io.netty.util.HashedWheelTimer $ Worker.run (HashedWheelTimer. 커피 콩: 360) java.lang.Thread.run(Thread.java:745)을 통해항목 28163 "ConsumerFetcherThread-analytics-group_Philipp.local-1458441725398-581eabc3-0-0": (상태는 in_native에 해당) sun.nio.ch.Net.Methode로) 설문 조사(sun.nio.ch.SocketChannelImpl.poll 기본(SocketChannelImpl.java:954) 또는 차단된 <0x00000006c056d538>(java.lang.Object) sun.nio.ch.SocketAdaptor에서 $ SocketInputStream.read (SocketAdaptor.java:204) - 독점 <0x00000006c056d5b8> 자바(a.lang.Object) sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:103) - <0x00000006c056d5f8> 미리 정해진 (sun.nio.ch.SocketAdaptor $ SocketInputStream) java.nio.channels.Channels에서? rrr ReadableByteChannelImpl.read(Channels.java:385) - 꾸준한 (<0x00000006c056d618> java.lang.Object) kafka.utils.Utils $ .read 아래(Utils.scala: 380) kafka at.network.BoundedByteBufferReceive.readFrom(BoundedByteBufferReceive.scala: 54) kafka at.network.Receive $ class.readCompletely (Transmission.scala: 56) kafka.network.BoundedByteBufferReceive.readCompletely에서만(BoundedByteBufferReceive.scala: 29) kafka at.network.BlockingChannel.receive (BlockingChannel.scala: 111) kafka at.consumer.SimpleConsumer.liftedTree1 $ 7 (SimpleConsumer.scala: 71) kafka.consumer.SimpleConsumer.kafka $ 소비자 rrr SimpleConsumer $$ sendRequest 아래(SimpleConsumer.scala: 68) 전자 금고 <0x00000006c056d6e0>(java.lang.Object) kafka.consumer.SimpleConsu에서
지금 이 간단한 다운로드로 컴퓨터 성능을 높이십시오. 년
충돌 기사 파일을 확인하십시오. 실제 편지의 충돌이 있는 파일입니다. dump는 어떤 메모리 할당이 실패했는지 보여줄 수 있습니다.충돌 바이너리의 크기를 확인하십시오. 특정 JRockit JVM이 충돌하면 충돌 바이너리(.core도 생성합니다.
소중한 시스템에 가장 적합한 하드웨어 진단이 무엇이든 시도해 보십시오. JVM 충돌은 드물기 때문에 Sun이 할 수 있도록 보고합니다. 이것은 버그 추적 시스템에서 더 많이 수행할 수 있습니다. Ding Java SE, jvm_exact 또는 jit 하위 범주를 사용합니다.
/ bin / 실행을 엽니다. bat를 Windows로, 편집을 위해 Linux에서 /bin/run.sh. JVM 충돌 표시기에 대한 보고서를 숨기려면 해당 행을 주석 처리하여 JVM 충돌이 분석되었음을 정확히 표시합니다. 예: #ERROR_FILE은 "- XX: ErrorFile = $ PA_HOME / wood / java_error% p.