sbt assemblyPackage依赖打包出错java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:Java Stack space
我的运行环境
win 7 64位。
IDEA
出错信息
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
at java.util.concurrent.FutureTask.get(FutureTask.java:83)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:785)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.OutOfMemoryError: Java heap space
at java.io.BufferedInputStream.<init>(BufferedInputStream.java:178)
at org.apache.tomcat.util.bcel.classfile.ClassParser.<init>(ClassParser.java:77)
at org.apache.catalina.startup.ContextConfig.populateJavaClassCache(ContextConfig.java:2193)
at org.apache.catalina.startup.ContextConfig.populateJavaClassCache(ContextConfig.java:2178)
at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2115)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2068)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1942)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1908)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1893)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1296)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:346)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173)
... 8 more
解决方法
使用IDEA 自带SBT
修改参数:
打开对话框:
File -> Other settings ->Default settings -> Build,Execution,Deployment -> Build Tools -> SBT
修改JVM Options选项:
-Xmx2048M
-XX:MaxPermSize=512m
-XX:ReservedCodeCacheSize=1024m (主要是这个,因为要重新编译,打出的包都有400M,所以要大于500M才行)
使用自已安装的sbt
-XX:+UseConcMarkSweepGC
-XX:+CMSClassUnloadingEnabled
-XX:PermSize=2048M
-Xms2048m
-XX:MaxNewSize=1024m
-Xmx2048M
-XX:MaxPermSize=4096m
-XX:ReservedCodeCacheSize=1024m 这个参数是比较重要的不能小于500M
但是,为什么会出现这个问题呢?以及配置中的选项都是什么含义?
打包
参考:
Idea 编写 Spark 示例代码并打包成Jar:http://blog.csdn.net/dai451954706/article/details/42589771
注意:默认是把所有的核心内容和依赖打成一个包。
可以分开,在project structure对话框中的artifacts选项中区别
核心内容: ‘工程名’compile output
依赖: Extracted ‘包名’
默认这两是在一起的,’工程名’compile output 一般在最后一行。