scala – SBT ProGuard插件:OutOfMemoryError,如何增加堆空间?
当我尝试使用sbt-proguard插件为我的项目组装一个jar时,我总是在线程“main”
java.lang.OutOfMemoryError中得到一个Exception:
Java堆空间
我尝试增加sbt的堆空间,但事实证明,proguard插件生成了自己的java进程,并且-Xmx256M参数是硬编码的.我无法弄清楚如何更改它,而不是更改proguard代码本身. 我在JDK 7上使用sbt 0.12.3和scala 2.10.1的sbt-proguard插件0.2.1 我已尝试在proguard中设置javaOptions:= Seq(“ – Xmx2G”)以及proguard =“ – Xmx2G”中的javaOptions,但插件似乎忽略/覆盖此: > ps aux|grep java kaeser 47084 105.1 1.1 2927540 94440 s000 R+ 10:07AM 0:05.52 /usr/bin/java -Xmx256M -cp /Users/kaeser/.ivy2/cache/net.sf.proguard/proguard-base/jars/proguard-base-4.9.jar proguard.ProGuard -include /Users/kaeser/Documents/workspace/pipeline-runner/target/scala-2.10/proguard/configuration.pro kaeser 45087 0.0 6.3 5312012 531028 s000 S+ 6:03PM 1:24.88 /usr/bin/java -Xmx2G -Xms512M -Xmx2G -Xss1M -XX:MaxPermSize=512m -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -Xshare:off -jar /usr/local/Cellar/sbt/0.12.3/libexec/sbt-launch.jar 我如何将Java选项传递给proguard插件,或以其他方式解决此问题? 解决方法
在proguard中添加javaOptions:= Seq(“ – Xmx …”)行到您的项目设置
更新 好吧我想我知道你的问题是什么. show proguard::java-options 它会打印你[info] List(-Xmx2G),这意味着你的proguard配置堆大小设置为2GB,但如果你尝试这个命令:show proguard:proguard :: java-options它会显示[info]列表(-Xmx256M)在proguardTask中使用.考虑到这一点,我猜你在项目设置中有这样的东西: lazy val main = Project( id = "project",base = file("."),settings = Seq(javaOptions in proguard := Seq("-Xmx2G")) ++ proguardSettings) 基本上发生了什么,proguard使用默认配置设置并删除你的javaOptions设置,事实是任务正在使用命令的任务范围. 所以添加这一行: javaOptions in (SbtProguard.Proguard,proguard) := Seq("-Xmx2G") 对于您的设置,它看起来应该类似于: lazy val main = Project( id = "project",settings = proguardSettings ++ Seq( javaOptions in (SbtProguard.Proguard,proguard) := Seq("-Xmx2G") ) 现在调用show proguard:proguard :: java-options它会显示[info] List(-Xmx2G).您还可以打开会话的全局日志记录并查看是否一切正常:在Global中设置logLevel:= Level.Debug 更新 我更喜欢Build.scala文件,但在* .sbt中它更简单,只需按以下顺序添加这些行: import com.typesafe.sbt.SbtProguard._ import com.typesafe.sbt.SbtProguard.ProguardKeys.proguard proguardSettings javaOptions in (Proguard,proguard) := Seq("-Xmx2G") 保留行之间的顺序和换行符 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |