web-dev-qa-db-ja.com

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の同じ質問に対する 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の構成を変更して表示されないようにする方法については説明していません。

27
W.P. McNeill

これは、渡すフラグが機能すると仮定しているが、このフラグは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
_
19
Jigar Joshi

古い質問ですが、IntelliJを使用している場合、このエントリは次のとおりです。

-XX:MaxPermSize=512m

これらのファイルのいずれかでも見つけることができます。

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

多分そこにそれを削除するのに役立つでしょうか?

6
f1v3

OS X/macOSでこれを経験している人にとっての解決策は、メニューIntelliJ IDEA > Preferences...に移動してからOther Settings > SBTに移動し、フィールドVM parametersをクリアすることでした。

Akauppiも後述しますが、IntelliJ IDEA > Preferences...の下のBuild, Execution, Deployment > Built Tools > sbtには別のパラメーターセットもあります

4
Brideau

IntelliJでは、特定のVMパラメーターが含まれます。

たとえば、デフォルトのSBTタスク実行構成VMパラメーターには、設定「-XX:MaxPermSize = 256M」が含まれます

このエントリをデフォルトまたはカスタムの実行構成から削除するだけで、警告は表示されなくなります。

2
durp

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にあります。

2
lpiepiora

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をいじる価値があると思うかどうかはあなた次第です...

1
David Keen

実際、非常に簡単なJava-8ではMaxPermSizeが非推奨になりました。必要なのは、vmoptionsファイルを編集して置き換えるだけです

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

この議論に追加するだけです。私のsbtコマンドはスクリプトになりました。スクリプトを編集し、MaxPermSize参照を削除しました。

これはプレイに関するものですが、sbtとMaxPermSizeの検索はここで終わります。

0
anoneironaut

-XX:MaxPermSizeオプションは、play frameworkインストールフォルダー内の「build」ファイルで指定されます。 MaxPermSizeエントリを削除すると、playプロジェクトの実行時の警告が削除されました。

例:/play-2.2.1/framework/build

0
Ramadas