48

私のマルチコア マシンでは、Eclipse は 100 ~ 250 % の CPU パワーを使用します。これは、新しいプレーン インストールと空のワークスペースでアイドリングしている場合でも同じです。実際に物事を行うと、遅くなり、反応しなくなります。

ここで提案されているようにメモリ設定を設定しようとしました: Eclipse uses 100% CPU random。それは助けにはなりませんでした。また、さまざまな Java バージョン、つまり OpenJDK と Oracle Java 7、および Eclipse バージョンの Juno と Indigo も試しました。私はUbuntu 12.04 LTSを使用しています。

Eclipse を閉じたときの別の問題として、Java プロセスは 200% を超える CPU 使用率で開いたままであり、手動で強制終了する必要があります。

4

6 に答える 6

23

私は今日同じ問題を抱えていましたが、CPU を占有していたインデックス スレッドであることが判明しました。最近、かなりの量のファイルをプロジェクトに追加しましたが、それを忘れていました。他の誰かがこの問題を抱えている可能性は低いと思いますが、私がどのように調査したかを投稿すると役立つかもしれません.

私はEclipse Junoに基づくSTSでUbuntu 12.10を実行しています。

  1. コマンドラインからEclipseを起動し、出力をファイルにリダイレクトして、スレッドダンプを取得できるようにします
  2. 少し落ち着いてから、各スレッドの CPU 使用率のリストを取得します: ps -mo 'pid lwp stime time pcpu' -C java. これは、CPU を大量に消費しているスレッドを特定した出力のサンプルです。

    PID LWP STIME TIME %CPU

    6974 - 07:42 00:15:51 133

    7067 07:42 00:09:49 86.1

  3. スレッド ID (私の場合は 7067) を 16 進数の 0x1b9b に変換します (たとえば、コマンド ラインで printf "0x%x\n" 7067 を使用)。

  4. kill -3: kill -3 6974 を使用して Java プロセスのスレッド ダンプを実行します。出力は、Eclipse を開始したときに stdout をリダイレクトしたファイルに保存されます。

  5. ファイルを開き、スレッドの 16 進 ID を探します。

    "Link Indexer Delayed Write-10" prio=10 tid=0x00007f66b801a800 nid= 0x1b9b runnable [0x00007f66a9e46000]

    java.lang.Thread.State: RUNNABLE

    com.ibm.etools.references.internal.bplustree.db.ExtentManager$WriteBack.r

于 2013-02-08T06:05:07.140 に答える
12

割り当てられたメモリが実際に VM の構成された最大メモリ制限に達したため、ガベージ コレクターが狂った場合にのみ、このような動作を見てきました。大規模な Eclipse インストールがある場合、最初のステップは常にeclipse.ini のメモリ設定を増やすことです。

Window -> Preferences -> General -> Show heap statusも有効にしてください。Eclipse が現在使用しているメモリの量が (ステータス ラインに) 表示されます。それが許容最大値に達し、それ以上低下しない場合 (つまり、ガベージ コレクターが未使用のオブジェクトをクリーンアップできない場合)、それはまさに私が上で説明したことを示しています。

編集:デフォルトで異なるプラグインが含まれているため、使用しているEclipseパッケージを知っておくとよいでしょう。クラシック、モデリング、Java EE 開発者、...?

于 2012-07-05T19:38:05.953 に答える
12

プラグインでこの問題が発生したことはありますが、Eclipse 自体では発生しませんでした。

Help > About Eclipse > Installation detailsプラグインを 1 つずつ無効にして、デバッグを試みることができます。

于 2012-07-05T14:29:08.970 に答える
1

同じ問題に直面していました.EclipseでVM Argumentに続いて合格し、私にとってはうまくいきました。

-Xmx1300m -XX:PermSize=256m -XX:MaxPermSize=256m

于 2016-11-08T06:27:31.237 に答える
1

Java マルチスレッド ガベージ コレクタはガベージです。-XX:-UseLoopPredicate オプションを Java コマンド ラインに追加します。たとえば、バグhttps://bugzilla.redhat.com/show_bug.cgi?id=882968を参照してください

于 2012-12-03T20:10:34.653 に答える