[解決済み] MaxMetaspaceSizeを設定した方が良いですか?
質問
という質問をした後 これ という問いかけをしたところ、重要なのは「どうしたらいいか」ではなく「どうすべきか」であることがすぐにわかりました。
Java7からJava8へ移行するお客様がいます(Tomcat7を使用)。Java7では
-XX:MaxPermSize
,
で、一部の顧客はインストーラが設定するデフォルトよりも最大値を増やしています。
個々のニーズや用途に応じて
必要なもの
を設定します。
-XX:MaxMetaspaceSize
(以前の
-XX:MaxPermSize
の設定)を定義している顧客に対して、カスタム最大値を設定することができますか?新規にインストールする場合はどうでしょうか?その場合
-XX:MaxMetaspaceSize
をすべて削除してください。
その場合のメリットとデメリットを教えてください。
どのように解決するのか?
前回の回答でコメントしたように 理由 これらのメモリプールに制限を設けることは、異なるものです。
もし、あなたのユーザーが以前 増加 MaxPermSize がデフォルトより大きいのは、おそらく CMS でのフル GC や並行モードの失敗を避けるためか、アプリケーションが本当に多くのパーマ gen スペースを必要としていたためでしょう。
メタスペースの制限を事実上無限のデフォルトから減らすことは、全く別の目的を果たすことになります:無制限のメタスペースの増加を避けることです。
ただ、それはあくまで上限値であるということです。実際にコミットされた、つまり
現在
メタスペースのサイズは小さくなります。実際
MaxMetaspaceFreeRatio
(デフォルト70%) これは、実際のメタスペース・サイズが占有率の230%を超えることがないことを意味します。
そして、それが成長するためには、まず、オブジェクトを解放しようとするガベージコレクション(メタスペースフル)を強制的に満杯にする必要があります。
MinMetaspaceFreeRatio
(デフォルト 40%) の目標を達成するために
現在の
GCサイクルの後、メタスペースは占有率230%以下になる。
したがって、アプリケーションがクラスローダーやクラスを継続的にリークしたり、膨大な量の動的コードを生成したりしない限り、実際のメタスペース・サイズは実際の必要性に近い範囲内で安定するはずです。
TL;DR: メタスペース・サイズを制限する理由があるかもしれませんが、それはパーマ・ジェン・サイズを設定した本来の理由とは異なる可能性が高いです。したがって、その必要性を再評価する必要があります。
関連
-
[解決済み] プライベートバイト、バーチャルバイト、ワーキングセットとは?
-
[解決済み] org.apache.catalina.connector.ClientAbortException: java.io.IOException。APRエラー: -32
-
[解決済み] TomcatがremoveAbandonedTimeoutを無視して、プール内の接続をクローズする
-
[解決済み] 可能な限り常にパラレルストリームを使用した方がいいのでしょうか?
-
[解決済み] なぜJava 8のOptionalは引数で使ってはいけないのか
-
tomcat 起動エラー。ProtocolHandler["ajp-nio-8009"] に関連するエンドポイントの破棄に失敗しました (非常に簡単な解決方法)
-
[解決済み】なぜC++プログラマは'new'の使用を最小限に抑えなければならないのでしょうか?
-
[解決済み】なぜObjects.requireNonNull()を使用しなければならないのですか?)
-
[解決済み】Java 8のゲッターはオプションの型を返すべきですか?
-
[解決済み] Java Web アプリケーションでアプリケーションサーバーの外側から静的データを提供する最も簡単な方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] org.apache.catalina.connector.ClientAbortException: java.io.IOException。APRエラー: -32
-
[解決済み] TomcatがremoveAbandonedTimeoutを無視して、プール内の接続をクローズする
-
[解決済み] Java HotSpot(TM) 64-Bit Server VM の警告:オプション MaxPermSize を無視する。
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
深刻:起動中に子コンテナが失敗した
-
tomcat start report c3p0プールの初期化中... Com.mchange.v2.c3p0.
-
NamingException: このクラスローダーにバインドされているネーミング・コンテキストがありません。
-
[解決済み] MaxMetaspaceSizeを設定した方が良いですか?
-
[解決済み] IntelliJとTomcat...変更したファイルがTomcatで自動認識されない
-
[解決済み] Java Web アプリケーションでアプリケーションサーバーの外側から静的データを提供する最も簡単な方法