2013-10-24 4 views
1

메모리 예외 중 rspec의 대규모 테스트 스위트로서 전체가 실행될 때 메모리가 부족합니다. RSpec에 (JRuby를) 내가 반드시 내가 나를</p> <p>우리는 매우 가지고있는 문제의 근본을 얻을 도움이 될 진단 도구에 대한 권장 사항을 찾고 이에 대한 대답을 찾는 게 아니에요

우리는 메시지가

, 그것은 "Javalang :: OutOfMemoryError가 \ n 개의 permgen 공간"을 말한다

이 특정 시험에 발생하지 않지만, 테스트 스위트 실행에서 같은시기에 일어날 것으로 보인다 (분명히 메모리 사용량이 누적되지 않고 누적되어 결국 오류가 발생합니다)

ojdbc를 통해 oracle과 jruby를 사용하고 있습니다.

누구든지이 문제의 출처를 추적하기 위해 어떤 제안이 있습니까? 문제를 해결

PermGen 최대 제고 :이 답변 조쉬 실버 공업 스티븐 Karger에

답변

2

신용 (우리가 디버깅 ojdbc의 지점에 확보하지 못했더라도) jmap는 분명히 도움이 미만이었다. PermGen 최대 값을 128 메가 바이트로 두 배로 늘리면 10 배 큰 테스트 스위트를 지원할 수 있습니다. 필자의 테스트에서 자바 프로세스에 의한 메모리 사용이 새로운 PermGen max로 약 690mb (500 heap + 128 perigean + 50mb unknown) 레벨링되기 시작했다. 위에 표시된 것처럼 JRUBY_OPTS를 수정하여 PermGen 메모리 할당을 늘릴 수 있습니다.

# in your .bashrc or .bash-profile, or other environment control: 
export JRUBY_OPTS="--1.9 -J-XX:MaxPermSize=128m" 
+0

이것은 런타임 설정입니까, 아니면 컴파일해야합니까? –

+0

또한이 옵션이 JVM> v8과 관련이 없다고 생각합니다. Travis CI에서이 경고를받습니다. "Java HotSpot (TM) 64 비트 서버 VM 경고 : 무시 옵션 MaxPermSize = 128m; 제거 8.0 "'''' –