最近学习scala,在用sbt(Simple Build Tool,scala的构建工具)时,隔断时间会抛出“java.lang.OutOfMemoryError: PermGen space”这个异常,重启之后就好了,今天终于仍受不了了。
在问了google后,其解决方案比较直观,和增大jvm的内存大小的方法类似,增加些启动参数即可:
- 在哪里设置?
$ cat `which sbt`
其内容类似于下面的输出
#!/bin/sh
test -f ~/.sbtconfig && . ~/.sbtconfig
exec java -Xmx512M ${SBT_OPTS} -jar /usr/local/Cellar/sbt/0.13.0/libexec/sbt-launch.jar "$@"
可以看到sbt的配置默认在~/.sbtconfig文件中设置
- 设置选项
SBT_OPTS="-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:PermSize=256M -XX:MaxPermSize=512M"
但是,为什么会出现这个问题呢?以及配置中的选项都是什么含义?
- PermGen是什么?(参见https://blogs.oracle.com/jonthecollector/entry/presenting_the_permanent_generation)
PermGen(Permanent Generation),主要用来存放Java Classes的内部表示。联系到sbt的问题上,是scala在动态运行时会生成class(closure会生成单独的class?),所以在运行一段时间后会出现PermGen不够的情况,重启后又ok了。
- CMSClassUnloadingEnabled参数什么意思?
默认情况下GC是不回收PermGen的空间的(其名字也能反映这点),这个选项就是启用清除PermGen的功能,删除不用的classes。但是需要和UseConcMarkSweepGC参数使用。
相关推荐
针对SparkR安装出现的Invalid or corrupt jarfile sbt/sbt-launch-0.13.5.jar替代
sbt-jacoco, 在sbt中,JaCoCo代码覆盖插件 sbt JaCoCo - sbt中通过JaCoCo的代码覆盖率 这是一个 sbt插件插件,用于通过 JaCoCo 进行代码覆盖率分析。通过将以下内容添加到 project/plugins.sbt 来安装插件:ad
报错:java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.-附件资源
sbt-0.13.17 sbt-0.13.17 sbt-0.13.17 sbt-0.13.17 sbt-0.13.17 sbt-0.13.17
在oschina镜像不能用之后,现在使用阿里云作为镜像,通过该jar包能够快速地安装sbt。
SBT管道Playframework.g8 该项目包含一个SBT模板,其中包含所有项目的管道模板。 该模板的主要目标是: 标准化项目 加快开发速度,使开发人员远离繁琐的配置 配置管道所需的工具 如何使用 使用此模板需要执行以下...
修改了sbt内默认配置连接的国外镜像资源, 换到了阿里云提供的一个资源库, 速度超级快, 谁用谁知道.
资源来自pypi官网。 资源全名:sbt-python-client-1.0.1.tar.gz
sbt-1.3.0安装包,官网https://www.scala-sbt.org/download.html
下载请校验文件Hash:SHA256: EADA4630C139E90361F54CDF2F1FCB53CC8C11F810F4745291BB026B4781060A
sbt is a build tool native to Scala that can transform any build scenario into a streamlined, automated, and repeatable process. Its interactive shell lets you customize your builds on the fly, and ...
藏经阁-NO MORE _SBT ASSEMBLY__RETHINK-20.pdf
AVL 红黑树 SBT-2020.12.11
sbt-buildinfo 我知道这一点,因为build.sbt知道这一点。 sbt-buildinfo根据您的构建定义生成Scala源代码。最新稳定对于sbt 1.x,将sbt-buildinfo添加为project/plugins.sbt的依赖项:addSbtPlugin( " ...
scala > val log = sbt.util. LogExchange .logger( " test " ) log : sbt.internal.util. ManagedLogger = sbt.internal.util. ManagedLogger @ c439b0f scala > val lm = { import sbt . librarymanagement . ivy...
错误日志:Error:java.lang.RuntimeException: Some file crunching failed, see logs for details Log: FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:...
梁.core.lang Beamly 核心 scala 语言增强功能。 该模块仅依赖于核心 Scala 库。获取 beamly.core.lang 添加此 sbt 依赖项: "com.beamly" %% "beamly-core-lang" % "0.5.0" 或 Maven 依赖: < dependency> ...
sbt1.3.5 解决国内下载慢问题sbt1.3.5 解决国内下载慢问题sbt1.3.5 解决国内下载慢问题
国内大家肯定遇到idea 更新sbt相关插件慢的问题。通过此资源库配置文件,可以大大的提高下载速率。把下载的文件直接放到 当前用户目录的.sbt目录下,如: ~/.sbt/repositories 通过如下配置效果更好: [repositories...
播放java-seed.g8 Giter8模板,用于在Java中生成Play项目。 该项目适用于知道如何使用Play并想立即上手的人们。 如果您要修改giter8模板,则仅需要克隆此项目。 有关giter8模板的信息,请参见 。 跑步 如果要创建...