2016-12-08 13 views
0

最近、私の角型アプリケーションでメモリリークのように見えるものが見つかりました。Angular.jsメモリリーク

私のコードに問題があるかどうかを調べるために、私はそれを離れてサンプルアプリケーションを作成することにしました。

  1. gitのクローンは
  2. NPMは
  3. 画面間で数回

を切り替えようとメモリーのタイムラインの記録を開始、

  • オープンChromeを起動github.com/angular/angular-seed.git後でタイムラインで私が見たものは次のとおりです。 timeline screenshot (コンソールのエラーは不在のファビコンに関連しています:)

    誰でもこの現象の原因を知っていますか?

    UPD:私は角度ルータなしで同じアプリでテストをしました(私はそれが原因であると思った)。私はただのindex.htmlへのビューの内容をコピーして、「VIEW1」と「VIEW2」ここ

    にNG-クリックで設定されたローカル変数「画面」のNG-ショーの条件を追加して、私が得たものである:timeline screenshot

  • +0

    私はあなたがそれを報告したいかもしれないと思います。 https://github.com/angular/angular.js/issues –

    答えて

    0

    私はいくつかのAngularアプリでこれまでに対処してきました。ほとんどの場合、Angularが不要なダイジェストループを多く呼び出して変更をチェックし、$ scopeデータからDOMを更新するか、$スコープをコントローラに結びつけています。

    ほとんどの場合、必要なデータのみが現在のスコープ内にあることを保証し、使用していない多くのデータポイントをAngularが不必要に追跡しないようにすることができます。

    はNG-インスペクタのようなChromeの拡張機能をインストールしてください:http://ng-inspector.org/やAngularJS Batarang:https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk?hl=en

    これらの両方があなたのメモリを消費し、どのようにループがその役割を果たしてダイジェストされたものをデータに関する詳細な情報を与えることができます。そこから、アプリを構築した方法やコントローラに渡されるデータがビューに結びついているかどうかの選択が必要になることがあります。

    私はこの質問のために他のタイプの回答が掲載されていることを知り、Angular2に精通していれば、これが新しいバージョンで解決されたかどうかを知ることができます。