2012-04-11 10 views
-2

私は次のコードJava - なぜOutOfMemoryErrorはありませんか?

ArrayList container = new ArrayList(); 

while (true){ 
    Integer i = new Integer(1); 
    container.add(i); 
} 

アプリケーションのクラッシュを使用してのOutOfMemoryErrorを生成しようとしていますが、何も印刷されていないか、ダンプされます!これは正常ですか?私はjavaコマンドにいくつかのオプションを渡す必要がありますか?どのようにしてこのメ​​ッセージを表示するように強制することができますか?

私はアプリケーションがトレースなしでクラッシュする組み込みシステム(cvmを使用)で動作しているため、これを実行しています。メモリリークの疑いがあるので、メモリリークの原因となるコードを記述して、どのようなメッセージがjvm出力に出力されるかを確認したいと考えました。私はそれを実行したときのコードは、それがクラッシュしたものの痕跡が与えられなかったことを書いた理由は、これは私がこの質問

エリー

+0

これを行う必要がある理由をさらに説明できますか?この状態をテストするのであれば、より良い方法があります。 – AHungerArtist

+1

それはコンパイルされますか?私はIntegerに引数のコンストラクタがないとは思わない。 – evanwong

+0

@KirkWoll、もし彼らが明確な意図を示したら、より良い答えが与えられるかもしれない。それまでは、彼らが私から得る最高です。 –

答えて

6

を掲載、なぜ私は

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

ArrayList container = new ArrayList(); 
while (true) { 
    Integer i = new Integer(1); 
    container.add(i); 
} 
を得るかです

私は何かをIntegerコンストラクタに入れます。それ以外の場合、コンパイルできませんでした。

+1

これは本当の答えです –

+1

あなたは '' Integer i = new Integer(1) 'を' 'int [] i = new int [10000]'に置き換えることでもっと速くなるでしょう... – Alex

+2

まあ、OOMEあなたが必要とするものは何ですか、なぜトップのためにまっすぐに撮影しないのですか? 'long [] x = new long [Integer.MAX_VALUE]' –

関連する問題