メモリ不足の問題の切り分け方の基本 まずは、メモリ不足がJavaヒープとCヒープのどちらで発生したかを切り分けておこう。 Javaヒープ OutOfMemoryErrorがスローされ、JavaVMの実行が継続している場合には、Javaヒープが不足している可能性が高い。Javaヒープ不足かどうかを確定させるために、スローされたOutOfMemoryErrorのトレースを確認しよう。 java.lang.OutOfMemoryError: Java heap space <=======【*1】 at java.nio.CharBuffer.wrap(CharBuffer.java:350) <=======【*2】 at java.nio.CharBuffer.wrap(CharBuffer.java:373) at java.lang.StringCoding$StringDecoder.
Java VMのメモリ不足の問題は、解決までに時間を要する。だが適切な初期調査を行えば、ある程度まで原因を絞り込め、早期解決につながる。今回はメモリ不足問題の対応方法を、体系立てて解説する。 問題解決のポイント Java VMでメモリ不足が発生した時に重要となるポイントは、早期に発生個所の特定と原因の切り分けである。 Webシステムでメモリが不足すると、「java.lang.OutOfMemoryError」メッセージが出力される。このメッセージが出力された時、最初に行うことは、WebサーバやJava VMのログを確認することだ。これらのログから障害の痕跡を発見できると、障害内容からメモリ不足の原因を切り分けられる。しかし、使用しているJava VMによっては、障害の切り分けに必要な情報が得られない場合もある。その場合、GCログが障害解析の資料として役に立つ。 以降、Webシステムを例に、
本ブログはJava8(特にMetaspace)に対応していない。 下記にJava8以降に対応した記事を記載する(予定)。 blog.pepese.com JavaVMのメモリ領域について JavaVMが管理するメモリ領域について 階層1 階層2 階層3 説明 Javaヒープ JavaVM上で起動するJavaプログラムのリソースを管理する領域。New領域とOld領域で構成される。 l" New領域 新規オブジェクトと閾値(-XX:MaxTenuringThreshold)未満のオブジェクトが配置される。(Young領域とも呼ばれる) l l" Eden領域 新規のオブジェクトが配置される。 l l" From領域 CopyGC(ScavengeGC、マイナーGC)が実行された際に、使用中のオブジェクトはここへコピーされる。(S0やS1とも呼ばれる) l lー To領域 CopyGC(Scav
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く