IntelliJを起動するか、 Play プロジェクトでplay
を実行すると、この警告が表示されます。
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0
どうすれば消えますか?
Mavenの同じ質問に対する answer は、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
が設定されていません。
IntelliJのMaxPermSize
Scala-> JVM Parametersオプションを見つけました。これを削除すると、IntelliJで警告が消えます。
編集
質問を変更しました。私はもともとこれがSBTで起こったと言っていました。 (以下のコメントのいくつかはこれに対処しています。)これは私の側のエラーでした。コマンドラインからplay
を実行する場合にのみ、SBTを実行するときは発生しません。
PlayがMaxPermSize
パラメーターを指定することは既知のバグですか?停止させる方法はありますか?
編集
これは jdk 8でのPermGenの削除 の複製ではないと思います。このスレッドは、警告が表示される理由を説明していますが、IntelliJまたはPlayの構成を変更して表示されないようにする方法については説明していません。
これは、渡すフラグが機能すると仮定しているが、このフラグは1.8以降では削除されているため、jvm 1.8以降にはpermスペースがないことを警告しています。
この警告を取り除くには、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も後述しますが、IntelliJ IDEA > Preferences...
の下のBuild, Execution, Deployment > Built Tools > sbt
には別のパラメーターセットもあります
IntelliJでは、特定のVMパラメーターが含まれます。
たとえば、デフォルトのSBTタスク実行構成VMパラメーターには、設定「-XX:MaxPermSize = 256M」が含まれます
このエントリをデフォルトまたはカスタムの実行構成から削除するだけで、警告は表示されなくなります。
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設定から-XX:MaxPermSize
値を削除します。
IntelliJでPlay2アプリを実行するときに使用される実際のJVMオプションは、インターフェイスに公開されていないようですが、workspace.xml
ファイルを手動で編集できます。 play2JvmOptions
設定を探します:
<setting name="play2JvmOptions" value="-Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M" />
-XX:MaxPermSize
値を削除します。
警告のためにworkspace.xmlをいじる価値があると思うかどうかはあなた次第です...
実際、非常に簡単なJava-8ではMaxPermSizeが非推奨になりました。必要なのは、vmoptionsファイルを編集して置き換えるだけです
-XX:MaxPermSize by -XX:MaxMetaspaceSize=128m
この議論に追加するだけです。私のsbt
コマンドはスクリプトになりました。スクリプトを編集し、MaxPermSize
参照を削除しました。
これはプレイに関するものですが、sbtとMaxPermSizeの検索はここで終わります。
-XX:MaxPermSizeオプションは、play frameworkインストールフォルダー内の「build」ファイルで指定されます。 MaxPermSizeエントリを削除すると、playプロジェクトの実行時の警告が削除されました。
例:/play-2.2.1/framework/build