2013-05-14 58 views
0

我正嘗試使用Spark(在Soot -Eclipse框架中)爲Java代碼生成調用圖。我從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 Core I-5。 eclipse進程運行的是javaw.exe。即使Helloworld使用碳煙,這種內存不足的行爲是否也會出現?我是新來運行分析的Java和IM不知道如果庫類增加了巨大的開銷。

或者正確的問題是 - 我如何使用-Xmx開關在Windows上的Eclipse中使用更多內存運行Soot - 任何人都可以做到這一點?

Eclipse中的命令如下。我在Spark分析中使用了一些簡化選項。

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

煙塵使用多少內存不是一個錯誤。您的Hello-World程序傳遞式地調用了數千種方法,並對所有這些方法進行了分析。

由於異常消息表明,你應該使用:

java -Xmx400m soot.Main ... 

這是一個JVM選項,而不是煤煙選項。