How do I make the "Java Hot Spot MaxPermSize" warning go away when using IntelliJ or Play?

51,735

Solution 1

This warns that you are still assuming that this flag you are passing in would work but this flag has been removed from 1.8 onward, there is no perm space in jvm 1.8 onwards

so to get rid of this warning remove -XX:MaxPermSize from all the places which passes it to jvm from sbt

For example, on Windows you just need to edit the file C:\Program Files (x86)\sbt\conf\sbtconfig.txt and edit to change it to comment the XX:MaxPermSize=256M. For example:

-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

Solution 2

I know it's an old question, but if you're using IntelliJ, this entry:

-XX:MaxPermSize=512m

can also be found in one of these files:

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

Maybe removing it there could help?

Solution 3

For anybody experiencing this on OS X/macOS, the solution for me was to go to the menu IntelliJ IDEA > Preferences..., then to Other Settings > SBT and clear the field VM parameters.

As akauppi also mentioned below, there is also another set of parameters in IntelliJ IDEA > Preferences... under Build, Execution, Deployment > Built Tools > sbt

Solution 4

Sbt reads the settings from $SBT_LAUNCHER_HOME/sbt-launch-lib.bash.

You can find following fragment, and remove -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. On windows it's in conf/sbtconfig.txt.

Solution 5

In IntelliJ, some default run configurations include specific VM paramters.

For example, the default SBT Task run configuration VM parameters include the setting "-XX:MaxPermSize=256M"

You can simply remove this entry from the default or from your custom run config and no more warnings will appear.

Share:
51,735
W.P. McNeill
Author by

W.P. McNeill

Updated on April 04, 2020

Comments

  • W.P. McNeill
    W.P. McNeill about 4 years

    I get this warning when I launch IntelliJ or run play in a Play project.

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

    How do I make it go away?

    The answer to the same question for Maven says to remove MaxPermSize option from the MAVEN_OPTS environment variable. I don't have a MAVEN_OPTS variable set on my machine. I imagine there is some similar sbt setting, but I don't know where it is.

    I see lots of explanations about what the change to Java is, but I don't see any tips for how to make this warning go away when working with Scala.

    OS X 10.9.4. Scala 2.11.1. sbt 0.13.5


    Edit

    Basically what I'm asking is "Where are all the places on my system MaxPermSize might get set?"

    I don't have a sbt-launch-lib.bash set on my machine.

    I did find MaxPermSize Scala->JVM Parameters option of IntelliJ. Removing that makes the warning go away in IntelliJ.


    Edit

    Changed question. I originally said that this happened for SBT. (Some of the comments below address this.) This was an error on my part. It doesn't happen when I run SBT, only when I run play from the command line.

    Is it a known bug for Play to specify the MaxPermSize parameter? Is there a way to make it stop?


    Edit

    I don't think this is a duplicate of PermGen elimination in jdk 8. That thread describes why the warning appears but does not explain how to change the IntelliJ or Play configurations to make it no longer appear.