0

我正在尝试使用 Spark(在 Soot -Eclipse 框架中)为 java 代码生成调用图。我从 HelloWorld 开始。即使对于这个小例子,看起来系统内存也不够用。

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 分析的新手,我不确定库类是否会增加巨大的开销。

或者,也许正确的问题是 - 我如何使用 -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 >

编辑:现在解决了。来自 Soot 生存指南:设置运行配置时,您应该将以下参数添加到 JVM -Xmx512m -Xss256m 以增加 VM 内存。

4

1 回答 1

1

使用大量内存的烟灰不是错误。您的 Hello-World 程序会传递调用数千个方法,所有这些方法都会被分析。

正如异常消息所暗示的,您应该使用:

java -Xmx400m soot.Main ...

这是 JVM 选项,而不是 Soot 选项。

于 2013-05-15T15:11:10.627 回答