2013-05-14 2 views
0

자바 코드 용 Spark (Soot -Eclipse 프레임 워크)를 사용하여 콜 그래프를 생성하려고합니다. HelloWorld로 시작했습니다. 이 작은 예제의 경우에도 시스템 메모리가 충분하지 않은 것처럼 보입니다.Spark (Soot -Eclipse 프레임 워크)을 사용한 콜 그래프 생성 - 메모리 문제

Soot has run out of the memory allocated to it by the Java VM. 
To allocate more memory to Soot, use the -Xmx switch to Java. 
For example (for 400MB): java -Xmx400m soot.Main . 

내 컴퓨터는 Windows 기반 4GB 코어 I-5입니다. 실행되는 Eclipse 프로세스는 javaw.exe입니다. 그루터기를 사용하는 Helloworld에서도 메모리 부족 문제가 예상됩니까? Java 용 프로파일 링을 처음 사용하고 라이브러리 클래스에 엄청난 오버 헤드가 추가되는지 모르겠습니다.

또는 아마도 올바른 질문입니다. -Xmx 스위치를 사용하여 Windows에서 Eclipse에서 더 많은 메모리를 가진 Soot를 실행하는 방법은 무엇입니까?

Eclipse의 명령은 다음과 같습니다. Spark Analysis에서 단순화 옵션을 사용하고 있습니다.

soot.Main  --w --d C:\Users\nbalaji\workspace\HelloWorld\sootOutput 
--process-path C:\Users\nbalaji\workspace/HelloWorld/src;  
--cp /C:/Users/nbalaji/workspace/HelloWorld/bin/, < bunch of Java/jre7 files > 

편집 :이 지금은 해결됩니다. 그을음 생존 가이드에서 : 구성을 실행할 때 JVM -Xmx512m -Xss256m에 다음 매개 변수를 추가하여 VM 메모리를 늘려야합니다.

+0

추가 연구에서 나는 [** this **] (http://edwards.sdsu.edu/research/index.php/daniel/236-increasing-heap-size-in-eclipse)가 매우 유용하다는 것을 발견했습니다. 문제를 해결했다. – Nik

답변

0

많은 메모리를 사용하는 Soot는 버그가 아닙니다. Hello-World 프로그램은 수천 가지 방법을 일시적으로 호출하며, 모두 분석됩니다.

예외 메시지에서 알 수 있듯이

, 당신은 사용해야합니다

java -Xmx400m soot.Main ... 

이것은 JVM 옵션이 아닌 그을음 옵션입니다.