2

JAVA GWT-P フレームワーク (バージョン 2.4) を使用して Web アプリケーションを開発しています。Eclipse (バージョン 3.7) Indigo を開発 GUI として使用しています。アプリケーションをデバッグしている間、Eclipse は通常ハングしますが、これはランダムな動作です。

そして、これはプログラムの一部だけで起こっているわけではありません。デバッグ中はいつでも、Eclipse が別のモジュールでハングします。

これを解決するために、Windows XP (開発 GUI: Eclipse バージョン 3.7 Indigo)、Fedora バージョン 16 (開発 GUI: Eclipse バージョン Helios Service Release 2)、Cent OS (開発 GUI: Eclipse バージョン) などの異なるオペレーティング システムを使用しようとしました。ヘリオス サービス リリース 2)。しかし、運がありません。

ハングアップの問題を解決できるように、使用する必要があるOS、Eclipseまたはバージョンを決定するのを手伝ってくれる人はいますか?

4

2 に答える 2

1

問題

私の古いcore2マシンで問題なく動作するGWTプロジェクトがあります。最近、新しいコア i7、8 GB RAM (Dell XPS Ubuntu 開発者版) を入手したとき、「開発」の下のブラウザー リンクをクリックしてデバッグを開始しようとすると、Eclipse が非常に頻繁にハングすることを発見しました (スタートアップの約 90% がハングします)。モード」の日食ビュー。通常のテスト ケースと「タイミングが異なる」場合にのみ発生するスレッド同期バグ (デッドロック) が存在する必要があります。これがタイミング バグのデッドロックであるという事実が、これが非常に「ランダム」に見え、まだ発見も修正もされていない理由です。私はこれを書いている時点ですべての最新の GWT と最新の Eclipse などを持っています。

回避策:

幸いなことに、そのリンクをコピーして、既に開始されている Firefox のインスタンス (Eclipse の外部) に貼り付けると、ハングすることは決してないことがわかりました。これが私のコードの問題ではないことは 100% 確信しています。GWT でデッドロックが発生していると 95% 確信しています。したがって、「開発モード」リンクをクリックしないでください。問題ありません。この投稿で誰かを助けてくれることを願っています。

于 2013-04-08T11:47:42.837 に答える
1

GWT 開発には、少なくとも 8G RAM、クアッドコアを搭載したマシンを使用してください。それ以下のものは破滅的で非生産的です。

理想的には 8 コア、12 GB。

  • 起動時に eclipse jvm vm ヒープ サイズの最大値を増やします。デフォルトの Eclipse 始動は、256M または 512M です。少なくとも 768M である必要があります。私は 1024M を試しましたが、768M 以上ではわずかな違いしかありませんでした。私の場合、900M が最も多く使用されているようです。

  • permgen のメモリ割り当ても増やす必要があるかもしれません。permgen スペースはクラス定義の格納に使用され、ガベージ コレクションは行われないと思います。私のEclipseが無期限にハングしたのは、新しいクラス定義を保存するためのpermgenスペースがなくなったときだったと思います。

Eclipse のスタックスペース割り当てを再定義する必要はありませんでした。

グーグルで検索して、メモリ割り当てを定義するための jvm 起動引数を見つけることができます。例 -Xmx など

  • 最初は単一のブラウザ用にのみ開発します。開発ブラウザとして FF と Chrome のどちらを使用するかを決定します。次に、エントリポイント gwt.xml を調整して、そのブラウザのユーザー エージェント プロパティを設定します。gwt で Google がプロパティ ユーザー エージェントを設定します。私が見つけたブラウザを 1 つだけコンパイルすると、コンパイルが大幅に高速化されます。

  • コンパイラがアクセスするプロジェクト、ソース ファイル、リソース、またはライブラリをネットワークまたは USB ドライブに保存しないでください。コンパイル可能/組み込み可能なすべてのリソースは、ローカル ドライブにある必要があります。

ネットワーク経由で jar や依存プロジェクトにアクセスする必要がないように、maven またはその他の依存関係管理ツールを使用してみてください。

  • ライブ プロジェクトの依存関係に依存して、開発戦略を転がしてはいけません。50 以上のプロジェクトを持つワークスペースを持つことは災害であり、開発チームが危機に瀕していることを意味します。Eclipse のバックグラウンドによるプロジェクトの強制的で永続的なコンパイル、スキャンは、Eclipse のパフォーマンスに大きな影響を与えます。

  • できるだけ多くの検証を無効にしてください。たとえば、html と JavaScript の検証を無効にします。

膨大な数のサーバー側プロジェクトがある場合... 開発戦略を再構築して、50 ~ 100 個のプロジェクトをプロジェクト パッケージにクラスター化し、各プロジェクト パッケージに含まれるコンパイル可能/検証可能なプロジェクト メンバーが 20 個を超えないようにする必要があります (理想的には、 5 つ未満のプロジェクト)。各パッケージはバージョンごとに凍結され、jar としてパッケージ化されます。開発の依存関係には jar のみを使用してください。

プログラマーは、200 個のプロジェクトがあるワークスペースで作業したいという衝動を抱かないようにする必要があります。拡張機能は、各プロジェクト パッケージの bugzilla 用に予約されています。200 個のプロジェクト ワークスペースを持つことは、プロジェクト管理には適していません。Eclipse の速度がときどき遅くなるため、プログラマーの時間が無駄になります。

  • 十分な一時スペース (Windows の場合はユーザー ディスクに十分なスラック スペース) を確保します。コンパイラのバッファリング/キャッシュ用のディスク容量が不足していると、スローダウンやハングアップが発生することがありました。5G のスラック スペースを確保することは最小限です。GWT コンパイラが生成した一時ファイルを削除またはクリアするために、ごみ箱をクリアしたり、ファイルを検索したりする必要がないようにするために、より良い結果が得られます。5Gの空き容量はやはり不便です。

AFAI が経験したことですが、Windows 7/vista も Linux もパフォーマンスに大きな違いはありませんでしたが、Windows では eclipse の起動がはるかに遅くなったようです。

  • したがって、ウイルス対策ソフトウェアを調整する方法を知っている場合は、ウイルス対策ソフトウェアに、ワークスペースとプロジェクト フォルダーのスキャンをスキップするように指示する必要があります。

  • 8 コア 12 GB のマシンを使用している場合を除き、ほとんどの Windows Aero、透過性を無効にする必要があります。ただし、ウィンドウの合成を維持する必要があります (そうしないと、悪いフォントを見て視力を失うことになります)。

于 2012-07-03T06:13:28.457 に答える