問題タブ [heap-profiling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
5797 参照

google-chrome - Chromeのヒーププロファイラーでオブジェクトのタイトルにある黄色の背景は何を意味しますか?

Chrome Developer Tools のヒープ プロファイラーについて頭を悩ませようとしています。スナップショットに到達可能なオブジェクトがいくつか表示されます。背景が黄色のものとそうでないものがあります。どういう意味ですか?違いは何ですか?

この場合、背景自体が黄色であるため (wtf)、色の凡例はまったく役に立ちません。

ヒープのスナップショット

0 投票する
2 に答える
2751 参照

javascript - d3.js : 正射回転の最適化

正射投影を使用してマップを作成しましたが、回転がスムーズではないため (6 ~ 7 FPS 程度)、パフォーマンスを改善しようとしています。

topojsonファイル(world-100m)で構築した世界地図です。country とやり取りして色付けする必要があるため、countries と同じ数の svg:path が存在します

ロード後、 d3.timer を使用して自動回転機能を起動しました:

なぜ遅いのかを理解するために、Chrome でプロファイル レコードを作成しました。結果は次のとおりです。

Chrome プロファイリング 1/2 Chrome プロファイリング 2/2

Animation Frame Firedが遅い部分のようですが、それが何であるかはよくわかりません。それを開くと、2 つの GC イベント (ガベージ コレクター ?) がありますが、周りには何もありません... この 90 ミリ秒の間に何が起こっているか分かりますか?

パフォーマンスを改善するためのヒントは大歓迎です:-)

よろしくお願いします!

ちなみにこんな感じです。 地図の概要

0 投票する
2 に答える
8711 参照

memory-leaks - Go(lang):PPROFヒーププロファイルを使用してメモリリークを見つける方法は?

pprof を使用してメモリ リークを検証しようとしています。

次の場所にあるヒーププロファイルの読み方を説明できますか? http://localhost:6060/debug/pprof/heap?debug=1

また、web起動後にコマンドを入力go tool pprof http://localhost:6060/debug/pprof/heapすると、空の .svg ファイルが生成されるのは正常ですか?

どうもありがとう

0 投票する
0 に答える
891 参照

google-perftools - google-perftools ヒープ プロファイラーのスタック トレースにシンボルを表示する方法

TDD 環境で google-perftools ヒープ プロファイラーを使用しています。最後に、pprof を使用してホット スポットを確認できるヒープ ダンプを取得します。シンボルは表示されますが、スタック内でどのようにリークが発生したかについての情報はほとんどまたはまったく提供されません。実際、私が見ることができる出力には組織がまったくありません。

最大のリークのスタック トレースは実行時に表示されますが、シンボルは表示されません。PPROF_PATH 環境変数を正しく設定していますが、効果がありません。どうすればこれを有効にできますか?

0 投票する
1 に答える
162 参照

javascript - Chrome 開発ツールを使用した JavaScript プロファイリング

Web ページに対して何らかの操作を行った後にヒープ スナップショットを作成するたびに、サイズが 3 ~ 4 MB 増加します。10 ~ 15 回続けると、ヒープ スナップショットのサイズが 100 MB まで増加します。アプリにメモリ リークがあることを証明できますか?

私が実行する操作は、毎回同じ結果が得られる検索操作です。

0 投票する
1 に答える
158 参照

javascript - 同一の chrome オブジェクト ID は、ヒープ プロファイラー内の同じオブジェクトを意味しますか?

Web アプリケーションの 1 つでメモリの問題に取り組んでいます。Chrome のヒープ プロファイラーを使用しています。この情報に基づいて仮定を行っているため、何かを非常に明確に理解していることを確認したいと思います。

CHROME デバッガー

上記@のヒープ プロファイルのスクリーンショットのシンボル。明確に理解していることを確認したい: 等しいオブジェクト ID は同じオブジェクトを意味する

a.objectId == b.objectId implies a same as b a.objectId == b.objectId implies NOT a same as b

したがって、実際には同じものであると予想していた 2 つのオブジェクトがあり、それらのオブジェクト ID が異なる場合、これは予期しないコピーが発生したことを意味しますか? これは、コード内で不要な重複を作成している可能性がある場所を特定できることを意味しますか?

ドキュメントはこれを言っているように見えますが、それが何を表すかではなく、なぜオブジェクト ID を持っているのかを明確に述べているわけではありません。

これはオブジェクト ID です。オブジェクトはガベージ コレクション中に移動されるため、オブジェクトのアドレスを表示しても意味がありません。これらのオブジェクト ID は実際の ID です。つまり、作成された複数のスナップショット間で保持され、一意です。これにより、ヒープの状態を正確に比較できます。これらの ID を維持すると、GC サイクルにオーバーヘッドが追加されますが、最初のヒープ スナップショットが作成された後にのみ開始されます。ヒープ プロファイルが使用されていない場合、オーバーヘッドは発生しません。

わかりました。しかし、これを私の C プログラマーの頭に戻す必要があります。ネイティブ ヒープを使用しても、ポインターの値は時間の経過とともに変化する可能性があることに気付きました。オブジェクト ID を時間の経過とともに一意のポインター アドレスとして効果的に扱うことはできますか?

0 投票する
1 に答える
3899 参照

go - pprof ヒープ図の解釈

pprof を使用してヒープをプロファイリングすると、次のようになります。

ここに画像の説明を入力

ただし、その視覚化をどのように解釈するかについては明確ではありません。特に:

「矢印の横のメモリは_____を意味し、ボックス内のメモリは_____を意味します。したがって、ボックスに複数の矢印がある場合は_____を意味し、ボックスに複数の矢印がある場合は_____を意味します」.