2008-09-26 5 views
27

EXCEPTION_ACCESS_VIOLATION으로 Java VM이 충돌하고 hs_err_pidXXX.log 파일이 생성되면 어떻게됩니까? 오류 자체는 기본적으로 널 포인터 예외입니다. 항상 JVM의 버그로 인해 발생합니까? 아니면 하드웨어 또는 소프트웨어 충돌이 오작동하는 등의 다른 원인이 있습니까?Java VM의 가능한 원인 EXCEPTION_ACCESS_VIOLATION?

편집 : 기본 구성 요소가 있습니다. 이것은 win32의 SWT 응용 프로그램입니다.

+1

Java3D와 같은 원시 코드 관련 작업을 수행하고 있습니까? –

답변

14

대개 이것은 VM의 버그입니다. 하지만 모든 원시 코드 (예 : JNI 호출)가 원인 일 수 있습니다.

hs_err_pidXXX.log 파일에는 문제가 발생한 위치에 대한 정보가 포함되어 있어야합니다.

파일 내부의 "힙"섹션을 확인할 수도 있습니다. 많은 VM 버그는 가비지 콜렉션 (이전의 VM에서는 특히)으로 인해 발생합니다. 충돌이 발생했을 때 쓰레기가 작동 중이면이 섹션에 표시되어야합니다. 또한이 섹션에서는 힙의 일부 섹션이 채워지는 경우 (백분율 숫자)를 보여줍니다.

VM은 메모리 부족 상황에서 충돌하는 경향이 훨씬 큽니다.

+0

충돌하는 동안 가비지 수집기가 실행되고 있는지 확인하는 방법은 무엇입니까? –

1

가장 먼저해야 할 일은 JVM을 가능한 최신 버전으로 업그레이드하는 것입니다.

문제를 반복 할 수 있습니까? 아니면 무작위로 발생하는 것 같습니까? 우리는 최근 JVM이 무작위로 무작위로 부서지면서 문제가 발생했습니다. 하드웨어 문제였습니다. 우리는 드라이브를 새로운 서버에 넣었으며 완전히 사라졌습니다.

결론 JNI를 수행하지 않는다면 위의 포스터에서 언급했듯이 JVM이 충돌하지 않아야합니다. 그렇다면 내게 하드웨어 문제가 있다는 것입니다.

+0

정확한 문제가 무엇인지 설명해 주시겠습니까? 나는 그러한 오류에 고심하고 HW 문제가 어떻게 발견 될 수 있는지 생각하고있다. –

+0

하드웨어 문제를 감지하는 한 가지 방법은 Windows의 '이벤트 뷰어'를 보는 것입니다. 하드웨어 문제가보고 될 수있는 큰 변화가 있습니다. – frewper

1

찾을 내용을 알고 있으면 문제의 원인은 hs_err * 파일에 기록됩니다. 보세요, 아직 명확하지 않은 경우 스택 추적 및 기타 관련 정보의 처음 5 ~ 10 행을 게시하는 것을 고려하십시오 (모든 것을 게시하지 마십시오. 도움이되지 않는 수많은 정보가 있습니다. 이 1 % 인 것이 중요합니다 .-))

0

브라우저 위젯을 사용하고 브라우저 위젯에서 javascript를 실행하고 있습니까? 그렇다면 JVM이 다양한 Windows 라이브러리의 원시 코드로 손상되도록하는 SWT의 일부 버전에는 버그가 있습니다.

내가 열어 본 두 가지 예는 bug 217306bug 127960입니다. 그러나이 두 버그 보고서는 SWT에서 발생한 JVM의 유일한 버그 보고서는 아닙니다.

브라우저 위젯을 사용하지 않는 경우이 제안은 도움이되지 않습니다. 이 경우 SWT bugs causing a JVM crash의 목록을 검색 할 수 있습니다. 이들 중 어느 것도 문제가 아니라면 SWT로 버그 보고서를 열 것을 적극 권장합니다.

3

답변 됨 found!

나는 동일한 오류가있어서 pid 로그 파일의 내용을 제공 한 다른 사람들이 64 비트 Windows를 실행하고 있음을 알았습니다. 나처럼. 끝 로그 파일에는 PATH 문이 포함되어 있습니다. C : \ Windows \ SysWOW64가 % SystemRoot % \ system32 앞에 잘못 나열되었습니다. 내가 그것을 고치면, 예외는 사라졌다.

+0

정말 고마워요! 내 PATH 변수에 잘못된 항목이있는 것으로 밝혀졌으며 문제가 해결되어 해결되었습니다. – Meghan

0

나는 오랫동안 사용해 왔으며 꽤 신뢰할만한 JNLP 응용 프로그램과 동일한 문제가 있습니다. 이 문제는 Windows 7에서 Windows 10으로 업그레이드 한 직후에 시작되었습니다.내 조사에 따르면 승 10의 버그 일 가능성이 높습니다.

다음은 해결책이 아니지만 추악한 해결 방법입니다. jre/bin 디렉토리에는 javaws.exe이 있습니다. 을 오른쪽 버튼으로 클릭 한 경우/등록/호환성에이 프로그램을 실행하면이 프로그램을 실행하면 JNLP 응용 프로그램이 작동하기 시작합니다.

이 방법을 사용하면 보안 문제가 발생할 수 있으며 다른 옵션이없고 100 % 자신이하는 일을 알고있는 경우에만 사용하십시오.