MavenでJava 8プロジェクトをビルドする場合:
mvn clean package
私はこのメッセージを受け取ります:
Java HotSpot(TM)64ビットサーバーVMの警告:オプションMaxPermSize = 128mを無視します。サポートは8.0で削除されました
このメッセージを削除するには?
MavenでJava 8プロジェクトをビルドする場合:
mvn clean package
私はこのメッセージを受け取ります:
Java HotSpot(TM)64ビットサーバーVMの警告:オプションMaxPermSize = 128mを無視します。サポートは8.0で削除されました
このメッセージを削除するには?
回答:
JDK 8の互換性ガイドによると、Java 8ではコマンドラインフラグMaxPermSize
が削除されています。その理由は、永続的な世代がホットスポットヒープから削除され、ネイティブメモリに移動されたためです。したがって、このメッセージを削除するには、MAVEN_OPTS環境ユーザー変数を編集します。
Java 7
MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m
Java 8
MAVEN_OPTS -Xmx512m
sudo gedit ~/.profile
、そこに回答の行を追加してファイルを保存します。
sudo
ホームフォルダーのファイルを編集するのですか?私には非常に奇妙な練習のようです。
JDK 8のHotSpot JVMは今、クラスのメタデータの表現のためのネイティブのメモリを使用していると呼ばれるメタスペース。
永続的な世代は削除されました。無視され、彼らは、コマンドライン上に存在している場合は、警告が発行されます。PermSize
MaxPermSize
-XX:MaxPermSize=size
永続的な生成スペースの最大サイズ(バイト単位)を設定します。このオプションはJDK 8で非推奨になり、オプションに置き換えられました-XX:MaxMetaspaceSize
。
-XX:PermSize=size
パーマネント世代に割り当てられたスペースを(バイト単位で)設定します。これを超えると、ガベージコレクションがトリガーされます。このオプションはJDK 8で非推奨になり、オプションに置き換えられました-XX:MetaspaceSize
。
MaxPermGen
とMaxMetaSpaceSize
自分の役割は、実質的に逆転しているため、誤解を招くように。Java 8クラスのメタデータスペースは、32 / 64MBに制限されたPermGenに常駐し、それMaxPerGen
を増やすために使用されていました。ただし、Java 8以降、PermGenはなくなり、クラスメタデータスペースは無制限になるため、MaxMetaspace
実際にはサイズを使用してそれを減らします。詳細については、次を参照してください。stackoverflow.com
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"
問題は解決された
まだ誰かがこの種のメッセージを受け取る場合に備えて。これは、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>
この問題を解決するには、インストール済みのJDKパスを設定しただけです
standalone.conf
JBoss \ Wildflyサーバーのbinフォルダーの下にあるファイル。これを解決するには、次の手順を実行します。