2012-04-20 3 views
0

나는 Hibernate와 SQLite Dialect가있는 자바 프로젝트를 가지고있다. 또한 모델 요소간에 많은 링크가있는 모델이 있습니다. DB에 더 많은 양의 데이터를 저장하려면 불규칙한 스택 오버 플로우가 발생합니다. 때로는 효과가 있습니다. somtimes 일 dosntnt. 왜 그런가요?Java에서 최대 절전 모드와 sqlite로 불규칙한 stackoverflows

예외 : sun.nio.cs.SingleByte.withResult에서

(알 소스)

at sun.nio.cs.SingleByte.access$000(Unknown Source) 
at sun.nio.cs.SingleByte$Encoder.encodeArrayLoop(Unknown Source) 
at sun.nio.cs.SingleByte$Encoder.encodeLoop(Unknown Source) 
at java.nio.charset.CharsetEncoder.encode(Unknown Source) 
at sun.nio.cs.StreamEncoder.implWrite(Unknown Source) 
at sun.nio.cs.StreamEncoder.write(Unknown Source) 
at java.io.OutputStreamWriter.write(Unknown Source) 
at java.io.BufferedWriter.flushBuffer(Unknown Source) 
at java.io.BufferedWriter.write(Unknown Source) 
at java.io.Writer.write(Unknown Source) 
at java.io.PrintStream.write(Unknown Source) 
at java.io.PrintStream.print(Unknown Source) 
at java.io.PrintStream.println(Unknown Source) 
    ... 
+0

예외가 발생한 코드와 예외적으로 스택 추적을 포함한 예외의 세부 정보를 1-로 업데이트 할 수 있습니까? –

답변

0

자바 스택 만 중첩 메소드 호출의 일정량을 보유 할 . 예를 들어 큰 트리 구조가 있고 트리의 높이가 최대 스택 크기보다 크면 스택 오버플로가 발생합니다. 스택 오버플로의 가장 일반적인 원인은 재귀 적 또는 순환 종속성이있는 경우입니다.

내 조언은 데이터 구조에 순환 의존성이 있는지 알아 보는 것입니다.

구조가 실제로는 큰 경우에는 관리하기 쉽도록 데이터를 다시 디자인하거나 분할해야합니다. 마지막 수단으로 스택 크기를 늘릴 수 있습니다.

+0

스택 트레이스와 코드를 게시 할 경우 순환 종속성이 있는지 알아낼 수 있습니다. – barsju

+0

순환 종속성으로 인한 것으로 생각됩니다. 그런데 가끔은 어떻게 작동합니까? 나는 코드를 게시하고 싶지 않다. 그것의 코드의 많은 라인과 다양한 대형 모델입니다. – ChHaupt

+0

@ user1346330 가능하면 최소한의 코드가 포함 된 테스트 응용 프로그램을 만들어 문제를 재현하고 게시하십시오. 여러 번이 연습을하면 기본 문제가 노출됩니다. –

관련 문제