Java HotSpot(TM)64ビットサーバーVMの警告:オプションMaxPermSizeを無視しています


133

MavenでJava 8プロジェクトをビルドする場合:

mvn clean package

私はこのメッセージを受け取ります:

Java HotSpot(TM)64ビットサーバーVMの警告:オプションMaxPermSize = 128mを無視します。サポートは8.0で削除されました

このメッセージを削除するには?


2
詳しい説明については、bugs.java.com / bugdatabase / view_bug.do?bug_id = 6964458を参照してください
Dag

1
IDEAのインスタンスが既に1つ実行されている可能性があります。[1]:stackoverflow.com/a/20553943/3741698
David Hackro、2015年

回答:


163

JDK 8の互換性ガイドによると、Java 8ではコマンドラインフラグMaxPermSizeが削除されています。その理由は、永続的な世代がホットスポットヒープから削除され、ネイティブメモリに移動されたためです。したがって、このメッセージを削除するには、MAVEN_OPTS環境ユーザー変数を編集します。

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

Java 8

MAVEN_OPTS -Xmx512m

13
そしてその理由は、OracleのJRE 8、AFAIKでPermGenスペース全体が削除されているためです。
Puce、2014年

1
誰かがこれを行う方法を知らない場合- sudo gedit ~/.profile、そこに回答の行を追加してファイルを保存します。
gotqn 2015

私はこのオプションを〜/ .bashrcファイルに設定しています
paka

@gotqnなぜsudoホームフォルダーのファイルを編集するのですか?私には非常に奇妙な練習のようです。
Lundbergによる

22

JDK 8のHotSpot JVMは今、クラスのメタデータの表現のためのネイティブのメモリを使用していると呼ばれるメタスペース

永続的な世代は削除されました。無視され、彼らは、コマンドライン上に存在している場合は、警告が発行されます。PermSizeMaxPermSize


これは間接的に質問に答えるだけです...答えは「警告を削除するにはフラグを削除してください」です。以下のよう洞察に満ちたコメント @によってオハッド・シュナイダーは明らかに、何もありません1個の彼らのために単一の置換。
コニー

10
-XX:MaxPermSize=size

永続的な生成スペースの最大サイズ(バイト単位)を設定します。このオプションはJDK 8で非推奨になり、オプションに置き換えられました-XX:MaxMetaspaceSize

-XX:PermSize=size

パーマネント世代に割り当てられたスペースを(バイト単位で)設定します。これを超えると、ガベージコレクションがトリガーされます。このオプションはJDK 8で非推奨になり、オプションに置き換えられました-XX:MetaspaceSize


12
私はそれはあなたが以前の用途に切り替える必要があることを意味するので、これがdownvotedれたと思うMaxPermGenMaxMetaSpaceSize自分の役割は、実質的に逆転しているため、誤解を招くように。Java 8クラスのメタデータスペースは、32 / 64MBに制限されたPermGenに常駐し、それMaxPerGen増やすために使用されていました。ただし、Java 8以降、PermGenはなくなり、クラスメタデータスペースは無制限になるため、MaxMetaspace実際にはサイズを使用してそれを減らします。詳細については、次を参照してください。stackoverflow.com
Ohad Schneider

8

JBoss EAP 6.4では、サーバーを右クリックし、VM引数の下で起動設定を開きます。

{-Dprogram.name=JBossTools: jboss-eap" -server -Xms1024m -Xmx1024m -XX:MaxPermSize=256m}

に更新

{-Dprogram.name=JBossTools: JBoss 6.4" -server -Xms512m -Xmx512m}

これで問題が解決します。


1

LinuxでJava 8を使用してコマンドラインmvn(バージョン3.3.3)を実行すると、同様のメッセージが表示されました。mavenスクリプト/ $ MAVEN-HOME / bin / mvnを開くと、次の行が見つかりました

MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

$ MAVEN_PROJECTBASEDIRは、デフォルトではホームディレクトリです。したがって、2つの場所を確認できます。1つ目は、ファイル$ MAVEN_PROJECTBASEDIR / .mvn / jvm.configです(存在する場合)。次に、環境変数MAVEN_OPTSを設定している可能性のあるファイルを調べます。候補ファイルは、.bashrc、.bash_profile、.profile、およびそれらに含まれる/etc/profile、/etc/bash.bashrcなどのファイルです。

私が見つけた

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"

私のシステムの.bashrcで、次のように変更します

export MAVEN_OPTS="-Xmx512m"

問題は解決された


1

まだ誰かがこの種のメッセージを受け取る場合に備えて。これは、mavenプロジェクトの実行時にJVM引数を追加するために発生します。Mavenに関連しているためpom.xml、プロジェクトでファイルを確認できます。

この行を見つけ<argLine>...</argLine>て、私のプロジェクトで私は以下にも議論があります

<argLine>-Xmx1024m -XX:MaxPermSize=512m -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>

あなたは交換する必要があるMaxPermSizeとして議論を-Xms123m -Xmx123mするので、MaxPermSizeすでに廃止されており、あなたのJVMの設定に影響を取る習慣:

<argLine>-Xms512m -Xmx512m  -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>

-1

この問題を解決するには、インストール済みのJDKパスを設定しただけです

standalone.conf

JBoss \ Wildflyサーバーのbinフォルダーの下にあるファイル。これを解決するには、次の手順を実行します。

  1. JBoss_or_wildfly \ binフォルダーの下にあるstandlone.confファイルを開きます。
  2. このファイル内で#JAVA_HOMEテキストを見つけます。
  3. 文字を削除し、インストール済みのJDKパスを JAVA_HOME = "C:\ Program Files \ Java \ jdk1.8.0_65"に設定し ます。これで問題が解決することを願っていますありがとう

元の問題はMavenプロジェクトにあります。JBossとは何の関係もありません。
ボリス、

-5

Eclipseユーザーの場合...

実行—>実行構成—>あり—>代替JREを1.6または1.7に設定をクリックします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.