2

私は、クライアント (ユーザー) が新しいスレッドを作成してそれらを強制終了するためのコントロールを持っているアプリケーションに取り組んでいます。アプリケーションはJavaに基づいています。

あるケースでは、ユーザーは複数のスレッドを作成して強制終了し、新しいスレッドを作成して続行します。しばらくすると、OutofMemoryException がポップアップします。これはスレッドスタックの問題に関連していると思いました。そこで、スレッド スタック XSS を 1024KB から 512KB に減らし、Java ヒープ サイズを Xms 256mb XmX 1024mb から Xms 256mb Xmx 512mb に減らしました。

また、ヒープ サイズからオーバーフローするかどうかを確認するために、yourkit を使用してアプリケーションのメモリ プロファイリングを行いました。しかし、それは大丈夫のようです..スレッドが作成され、問題なく殺されます。

これは 8GB RAM の Windows 7 マシンです

他に何がこの例外を引き起こしているのでしょうか?

4

1 に答える 1

0

これには主に3つの原因があります。

  1. メモリリーク
  2. 非効率的なアルゴリズム
  3. ヒープサイズが小さすぎる

これらは通常、次の方法で修正できます。

  1. メモリ リーク - 不要なオブジェクトの逆参照
  2. 非効率的なアルゴリズム - メモリ効率の高いアルゴリズムを提供します (少ない方が良い場合もあります)。
  3. ヒープ サイズ - ヒープ サイズを増やす
于 2012-10-08T23:32:12.793 に答える