2011-12-09 18 views
0

私はOutOfMemoryErrorを取得する可能性が高いアプリケーションを作成しています。今私は、プログラムがOutOfMemoryErrorを経験したことをユーザーに通知して、それに応じて行動する方法を見つけたいと思っています。 (例えばヒープスペースの大きいプログラムを再起動するなど)Java - OutOfMemoryErrorの処理方法

エラーを「キャッチ」してユーザーに通知する方法はありますか?

+4

クール。あなたの質問は何ですか? –

+0

一度あなたがその例外を取得したら何かをするのが遅すぎるのではないですか? – muratgu

+0

@muratgu "それは依存します。あなたは火で遊んでいると自分自身を燃やしますか? :) - また、 "*エラー*"は、 "*例外*"よりもこれらの種類の方が適切です。 –

答えて

5

優れたユーザーエクスペリエンスの最初の教訓の1つは、ユーザーが必要以上に多くの作業を行う必要がないことです。

これは、「再起動できるようにユーザーに通知する」という考え方が貧弱なため、避けるべきです。

代わりに、アプリケーションを評価してと判断した場合、メモリが不足しています。メモリを解放するのに使用されていない間にストレージファイルにダンプできるデータのセグメントはありますか?より良いデザインパターン、データ表現、またはアルゴリズムで訂正できるいくつかの形式の効率がありますか?

問題に反応しないでください。予防的です。 OutOfMemoryErrorが避けられない場合は、アプリケーションはクラッシュする前に状態を保存する方法が必要です。

さらなるアイディアについては、記事を読む:http://www.javaperformancetuning.com/news/qotm036.shtml

+0

私が取り組んでいるプログラムが受け取りますオブジェクト(ネットワーク上の他のコンピュータから)、このオブジェクトは時々非常に大きくなる可能性があります。しかし、それは記憶を通らなければならない。あなたは、すべてがカバーされていることを確認するために最大のヒープスペースを8GBと言うように設定することは実現可能だと思いますか? –

+0

@SamanthaCataniaでは、64ビットOSとjvmで8GBのヒープを設定できます。オブジェクトの最大サイズを評価し、ヒープのサイズを適切に調整する必要があります。あなたのインターフェイスを介してサイズを制限することはできませんか?なぜオブジェクトが巨大で、それを部分的に取り込むことができますか?または遅延ロード? – aishwarya

+0

@aishwaryaオブジェクトが巨大なのは、ムービーやそれに類する大きなメディアファイルが含まれているからです。このような状況でオブジェクトを分解できますか? –

関連する問題