使用IntelliJ或Play时,如何使“Java Hot Spot MaxPermSize”警告消失?

当我启动IntelliJ或在Play项目中运行play时,我收到此警告。

 Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0 

我怎么让它消失?

Maven的相同问题的答案是从MAVEN_OPTS环境变量中删除MaxPermSize选项。 我的机器上没有设置MAVEN_OPTS变量。 我想有一些类似的sbt设置,但我不知道它在哪里。

我看到了有关Java变化的许多解释 ,但是在使用Scala时,我没有看到任何有关如何使此警告消失的提示。

OS X 10.9.4。 Scala 2.11.1。 sbt 0.13.5


编辑

基本上我要问的是“我的系统MaxPermSize上的所有位置都可以设置在哪里?”

我的机器上sbt-launch-lib.bash设置sbt-launch-lib.bash

我确实找到了IntelliJ的MaxPermSize Scala-> JVM Parameters选项。 删除它会使IntelliJ中的警告消失。


编辑

改变了问题。 我最初说这发生在SBT。 (下面的一些评论解决了这个问题。)这是我的错误。 只有当我从命令行运行play时,才会运行SBT。

是Play的已知错误指定MaxPermSize参数吗? 有没有办法让它停止?


编辑

我认为这不是jdk 8中PermGen消除的重复。 该线程描述了警告出现的原因,但未解释如何更改IntelliJ或Play配置以使其不再显示。

这警告你仍然假设你传入的这个标志会起作用但是这个标志已经从1.8开始移除了,jvm 1.8以后没有烫发空间

所以要摆脱这个警告从所有从sbt传递到jvm的地方删除-XX:MaxPermSize

例如,在Windows上,您只需编辑文件C:\Program Files (x86)\sbt\conf\sbtconfig.txt并编辑以将其更改为注释XX:MaxPermSize=256M 。 例如:

 -Xmx512M #Commented parameter as it is deprecated on jvm 1.8 onwards #-XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=128m # Set the extra SBT options -Dsbt.log.format=true 

我知道这是一个老问题,但是如果你使用IntelliJ,这个条目:

 -XX:MaxPermSize=512m 

也可以在以下文件中找到:

 PATH_TO_INTELLIJ\bin\idea.exe.vmoptions PATH_TO_INTELLIJ\bin\idea64.exe.vmoptions 

也许删除它可能会有所帮助?

对于在OS X / macOS上遇到这种情况的人,我的解决方案是进入IntelliJ IDEA > Preferences...菜单,然后进入Other Settings > SBT并清除现场VM parameters

正如akauppi在下面提到的,在Build, Execution, Deployment > Built Tools > sbt下的IntelliJ IDEA > Preferences...还有另一组参数

Sbt从$SBT_LAUNCHER_HOME/sbt-launch-lib.bash读取设置。

您可以找到以下片段,并删除-XX:MaxPermSize=${perm}m

 get_mem_opts () { local mem=${1:-1024} local perm=$(( $mem / 4 )) (( $perm > 256 )) || perm=256 (( $perm < 1024 )) || perm=1024 local codecache=$(( $perm / 2 )) echo "-Xms${mem}m -Xmx${mem}m -XX:MaxPermSize=${perm}m -XX:ReservedCodeCacheSize=${codecache}m" } 

PS。 在Windows上,它位于conf/sbtconfig.txt

在IntelliJ中,某些默认运行配置包括特定的VM参数。

例如,默认SBT任务运行配置VM参数包括设置“-XX:MaxPermSize = 256M”

您只需从默认条目或自定义运行配置中删除此条目,就不会再显示警告。

当IntelliJ加载项目时,您可能会看到此警告。 您可以通过从首选项>“VM参数”中的SBT设置中删除任何-XX:MaxPermSize值来停止此警告。

在IntelliJ中运行Play2应用程序时使用的实际JVM选项似乎没有在界面中公开,但您可以手动编辑workspace.xml文件。 查找play2JvmOptions设置:

  

并删除-XX:MaxPermSize值。

您是否认为为了发出警告而值得搞乱您的workspace.xml取决于您…

实际上它非常简单的JAVA-8已经弃用了MaxPermSize,你需要做的只是编辑你的vmoptions文件并替换

 -XX:MaxPermSize by -XX:MaxMetaspaceSize=128m 

-XX:MaxPermSize选项在play framework安装文件夹中的“build”文件中指定。 删除MaxPermSize条目在运行播放项目时删除了警告。

例如:/play-2.2.1/framework/build

只是为了加入这个讨论。 我的sbt命令最终成为一个脚本,我只是编辑了脚本并删除了MaxPermSize引用。

我知道这是关于游戏的,但搜索sbt和MaxPermSize最终会在这里结束。

  1. 打开intellij安装位置 – > bin
  2. 编辑idea.vmoptions或idea64.vmoptions文件
  3. 删除-XX:MaxPermSize = xxm
  4. 保存文件,然后重新启动IDEA

在此处输入图像描述