JavaA2Z

KAB-studio > プログラミング > JavaA2Z > OutOfMemoryErrorとは

OutOfMemoryError

日本語 容量範囲外異常
英語 out of memory error
ふりがな あうとおぶめもりーえらー
フリガナ アウトオブメモリーエラー

解説

J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名java.lang.OutOfMemoryError。
中にメモリが足りなくなった場合に投げられるクラスErrorクラスサブクラスのため厳密には例外ではない。
大きなサイズ・量の変数インスタンス作成し、ガベージコレクションによる解放が間に合わない場合に発生する。
 
メモリのサイズはjavaコマンドの実時に-mx等のオプション等で変更できるが、それでも対応できない場合もある。また、アプリケーションサーバー等の場合には、これらのオプションが使用できない場合もある。
 
基本的にはプログラムバグになるが、マシンの環境が変わることで発生したり、最終段階での総合テストで発生したりすることが多く、また原因を特定しにくいため解決が難しい。
解決方法としては、close()メソッドを呼ばなければならないクラスは必ずfinallyの中でclose()を呼ぶ、配列のサイズが大きすぎないようにする、ループ等でインスタンスを作らず使い回すようにする、等の措置が必要となる。
ただし、Javaでは、メモリの解放はガベージコレクションによってわれるため、確実性が伴わないこともある。場合によっては設計レベルでの全体的な見直しが必要な場合もあるだろう。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        try
        {
            // 大きな配列を作ってOutOfMemoryErrorを発生させます。
            long[] longs = new long[10000000];
        }
        catch( OutOfMemoryError e )
        {
            e.printStackTrace();
            // java.lang.OutOfMemoryError
        }
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        try
        {
            // 大きな配列を作ってOutOfMemoryErrorを発生させます。
            long[] longs = new long[10000000];
        }
        catch( OutOfMemoryError e )
        {
            e.printStackTrace();
            // java.lang.OutOfMemoryError
        }
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/07/12
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。