人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

G1GCでのエラーメッセージ

WebアプリをG1GCを使ってみましました。

しばらく動かしていると、gc.log に以下のようなメッセージが出力されます。
10632.453: [G1Ergonomics (Heap Sizing) attempt heap expansion, reason: humongous allocation request failed, allocation request: 16793616 bytes]
10632.453: [G1Ergonomics (Heap Sizing) expand the heap, requested expansion amount: 17825792 bytes, attempted expansion amount: 17825792 bytes]
10632.453: [G1Ergonomics (Heap Sizing) did not expand the heap, reason: heap expansion operation failed]

17Gものメモリを要求しているようです。
サーバに搭載してあるメモリは16Gで増設しても到底足りそうにありません。

そこで、
1)G1GCは大量にメモリが必要なのでしょうか?
2)8G程度のメモリで動かすことができるのでしょうか?
3)このメッセージが出た場合の問題点はどこでしょうか?
についてご教示いただければと思います。

非常に情報が少なく、エラー文をGoogleで検索してもソースコードくらいしか情報が得られません。
よろしくお願いいたします。

●質問者: takjoe
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :キャンセル
└ 回答数 : 1/1件

▽最新の回答へ

質問者から

環境は
CentOS release 6.2 (Final) 64bit
jdk 1.7.0_13
Tomcat 7.0.35

起動オプションは
-server -Djava.awt.headless=true -Xms3g -Xmx3g -XX:+UseG1GC -XX:MaxGCPauseMillis=200
ロギングオプションは
-Xloggc:$CATALINA_HOME/logs/gc.log -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintAdaptiveSizePolicy -XX:+PrintFlagsFinal

になります。


1 ● oil999

17Gバイトではなく、16Mバイトのヒープを要求しています。

1) いいえ。前述のように、ヒープはバイト単位でアローケートしているので、一気にそれほど大きなメモリを要求することはありません。
2) 普通のアプリであれば、問題なく動かせるはずです。
3) 可能性としては、大量のメモリを消費するスレッドが同時に動いていることが考えられます。
Runtime.getRuntime().totalMemory でメモリ量の監視を行ってみてください。
http://sattontanabe.blog86.fc2.com/blog-entry-49.html


takjoeさんのコメント
>17Gバイトではなく、16Mバイトのヒープを要求しています。 スミマセン読み間違えたみたいです。 追加の情報になってしまって申し訳ないのですが、 このメッセージは断続的に出ています。 大量のメモリを消費するスレッド等は走っていません。 VisualVMでメモリ量を監視しているのですが、 急に増えるということはなく、ゆるやかな傾きで増加していっています。 その過程でアロケートしようとして失敗している感じかなと思っています。 単純にアロケートの失敗に見えなくもないのですが、 失敗する理由がわかればと思います。

質問者から

oil999 さま のご指摘通り
17Gではなく16Mの拡張要求でした。


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ