1

Mac、Chrome、Firefox、および Safari で実行している場合、GWT ベースの Web アプリケーションで重大なメモリの問題が発生しています。

たとえば、Firefox では、Mac のアクティビティ モニターを見ると、メモリ消費量は、頻繁に更新しても時間の経過とともに急速に増加し、重要なセッションの後に 1 GB に達することがあります。Chrome や Safari でも同様の現象が発生します。

しかし、Java JProfiler (GWT 用) や Chrome プロファイラー、ネイティブ JS、リスナー、DOM 要素を調べるタイムラインなど、さまざまなプロファイリング ツールを使用する本当の理由はわかりません。

実際には、ここに 2 つの関連する問題があります。

  1. UI を更新せずに長時間使用すると、メモリが増加します。この場合、収集されていないガベージ SVG 要素 (SVG ベースのキャンバスを使用しています) を確認できますが、アクティビティ モニターでのメモリの増加は、このガベージで予想されるよりもはるかに高くなっています。

  2. 複数回の更新の後でもメモリは高いままであり、プロファイラーが上記のすべてのガベージが完全になくなったことを示しているにもかかわらずです。

このリークをしばらく追跡していますが、結果は出ていないので、助けていただければ幸いです。

ありがとう、

ヤロン。

4

2 に答える 2

0

以前に GWT アプリケーションでいくつかのリークを追跡したことがありますが、Java のガベージ コレクターが何が起こっているのかを隠しているため、それらがどこから来ているのかを特定するのは確かに簡単ではありません。リークの最も一般的な理由は循環参照であるため、複数のオブジェクトは相互に参照するため、ガベージ コレクションを実行できません。自分で見つけるのは難しいので、FindBugsというライブラリを使用します。これには、非常に便利なEclipse プラグインも付属しています。FindBugs は文字通り、考えられる可能性のあるものをすべて見つけてくれます。ただし、最初に設定を試してください。デフォルトでは、循環参照チェックは有効になっていません。

Bruno_Ferreira も良い点を指摘しています。GWT バージョンは常にメモリ リークを改善しているため、GWT バージョンが最新であることを確認してください。

于 2013-08-29T04:16:41.617 に答える
0
  1. 問題は Mac でのみ発生しますか?
  2. 使用している GWT のバージョンは何ですか? 2.5?
  3. この問題https://code.google.com/p/google-web-toolkit/issues/detail?id=6938を見ましたか?

以前は GWT を使用してリークの問題がいくつかありましたが、バージョン 2.5 では IE でも問題なく動作します。

于 2013-08-28T19:52:11.417 に答える