2009-07-17 3 views
8

고객 설치 중 한 곳에서 수천 건의 동일한 예외가 발생했습니다. 잘 기록 된 스택 추적 (9332)을 많이 수행 한 후에도 예외 발생은 여전히 ​​기록되지만 stacktrace는 발생하지 않습니다. 자바 프로세스를 재시작 한 후에는 똑같은 일을한다. 이번에는 17858 개의 스택 트레이스가 있었고 예외 발생 자체 만 있었다. 그것은의 log4j 기능이나 버그 비슷한 질문 here하지만 응답이왜 같은 예외가 반복적으로 발생하면 log4j가 스택 추적을 비활성화합니까?

...

인가? (나는 이전에, 내가 정말로 좋아하기 때문에, 그 아파치들이하는 것을 믿는다)

어떤 아이디어라도?

답변

21

자바 5 이상을 사용하고 계십니까?

그럼 당신이보고있는

:

VM 지금은 올바른 스택 백 트레이스를 제공하는 서버의 컴파일러 모든 "콜드"내장 예외. 성능상의 이유로 이러한 예외가 몇 번 발생하면 메서드를 다시 컴파일 할 수 있습니다. 다시 컴파일 한 후 컴파일러는 스택 추적을 제공하지 않는 사전 할당 된 예외를 사용하여 더 빠른 전략을 선택할 수 있습니다. Java 5 release notes-XX:-OmitStackTraceInFastThrow

씨 : 완전히 사전 할당 예외의 사용을 해제하려면이 새 플래그를 사용합니다.

+0

감사합니다. 그 대답은 옳은 대답처럼 들리지만 나는 그것을 두 번 확인한 다음 올바른 것으로 받아 들일 것입니다. –

+0

릴리스 노트에 더 이상 액세스 할 수 없으며 마지막으로 보관 된 캡처는 [2012-06-27] (http://web.archive.org/web/20120627040457/http://java.sun.com/j2se)에서 찾을 수 있습니다. /1.5.0/relnotes.html). 원본 소스를 확인하고 싶지만 관련 항목의 인용이 완료되었습니다. – vilpan

1

최소한 스택 추적이 실제로 동일하면 소리가 나에게 좋은 기능입니다. 더 이상 정보를 얻지 않고 로그를 더 크게 만들려고하고 (따라서 검색하기가 더 어려울 수 있습니다) 이 기능의 구성 가능성을 확인합니다 ...

편집 : log4j 코드를 살펴본 결과 아무런 변화가 없습니다. 이것은 로버트의 대답이 옳다는 것을 강하게 암시합니다. 좋은 VM 기능 이모 :)

+0

답해 주셔서 감사합니다. 내 로그 파일을 크게 만들고 싶지는 않습니다 (그리고이 기능은 버그입니다 ...). 문제는, 내가 처음에는 코드 내에서 버그를 찾으려고했을 때 스택 트레이스가없는 로그 항목을 보았을 때 (그리고 다른 곳에서도있을 수 있다고 생각조차하지 못했던) 로그를 보았을 때 그다지 도움이되지 못했습니다. –

관련 문제