問題タブ [memory-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.
c# - RedGate Memory Profiler を使用して ASP.net のメモリ リークを理解する
大規模な ASP.net 4.0 Web サイトを運営しています。一般的な .Net コンテンツ管理システムを使用し、何千ものコンテンツ アイテムと何百もの同時ユーザーを持ち、基本的に重い Web サイトです。
IIS7 ワーカー プロセスのメモリ使用量は、1 日で 8 ~ 10 GB に達する可能性があります。サーバーには 16GB がインストールされており、現在、アプリ プールを 1 日 1 回リサイクルするように設定されています。
メモリ使用量を減らすよう圧力をかけられています。メモリ使用量の多くは、大量のデータ文字列のキャッシュによるものですが、キャッシュ間隔は 5 ~ 10 分に設定されているため、これらの文字列は最終的にメモリから期限切れになるはずです。
ただし、RedGate Memory Profiler を実行した後、メモリ リークと思われるものを確認できます。「破棄されたオブジェクトによってのみメモリに保持される」オブジェクトでインスタンス リストの結果をフィルタリングしました (これがメモリ リークを見つける方法であると RedGate フォーラムで読みました)。これにより、メモリに保持されている文字列の長いリストが得られました。
各文字列について、Instance Retention Graph を使用して、何がメモリに保持されているかを確認します。System.string オブジェクトは、System.Web.Caching.CacheDependency によってある時点でキャッシュされたようです。グラフをずっと上にたどると、System.Collections.Specialized.ListDictionary を含むさまざまな他のクラスを通過し、System.Web.FileMonitor に到達します。文字列はファイルへのパス(画像/ PDFなど)であるため、これはある程度理にかなっています。
CMS がファイルへのパスをキャッシュしているように見えますが、これらのキャッシュされたオブジェクトは「リーク」されています。時間の経過とともに、これが蓄積され、RAM を使い果たします。
申し訳ありませんが、これは長く続きました...これらのメモリリークを止める方法はありますか? または、アプリ プールのリサイクルに頼らずにそれらをクリアするには? リークを修正できるかどうかを確認するために、キャッシュを実行しているクラス/コードを見つけることはできますか?
profiling - メモリ アクセス プロファイリング
アプリケーションがアクセスしているアドレスをアクセス順に知りたい。これには、Pin (Intel のプロファイラー) を使用できると聞きました。
ピンまたは他のツールでこれを行う方法はありますか?
アプリケーションは C で作成される可能性があります。Linux Mint 14 で作業しています。
注: 視覚的な結果があると便利ですが、必須ではありません。
ios - iOS で HTML5 ゲームをどのようにプロファイリングしますか?
私のバックグラウンドは、Windows でのネイティブ ゲーム開発です。しかし、私は現在、HTML5 で構築された iOS ゲームに取り組んでいます。このようなゲームのプロファイルを作成するにはどうすればよいですか? iOS 用の典型的なプロファイリング ツールは、ネイティブ レイヤーによって使用されるメモリについてのみ通知します。WebView、OpenGL、またはネイティブ プラグインがメモリのどの部分を使用しているかはわかりません。私はインターネットを精査してきましたが、Google Chrome を使用して HTML5 をプロファイリングする方法を見つけることができますが、これはあまり役に立ちません。
助けていただければ幸いです。
objective-c - iPhone iOS6 Image IOタイプ「常駐ダーティメモリ」をOSに戻す方法は?
高度なメモリ分析を扱う WWDC 2010 ビデオを見ています (セッション 311 ):
ビデオの 45:00 あたりで、パフォーマンス エンジニアが、アプリが RAM にロードした「Resident Dirty メモリ」をどうするかについて話し合います。エンジニアは、メモリ警告に応答して、アプリがこれをクリアする必要があることを提案しています。エンジニアはカスタム クラスの「フラッシュ」メソッドを貼り付け、didReceiveMemoryWarning
すべて問題ありませんが、コードにはメモリを解放する方法の例が実際には示されていません。
私が持っている質問は、「イメージ IO」で使用されるダーティ メモリの大きなチャンクをフラッシュするにはどうすればよいかということです。:
これは約 74 mb のメモリで、誰かが iOS6 に戻すのを待っています。何も起こっていません。自然に消えないので、iOSに戻す方法を知る必要があります。
これらのブロックは、このようなコードと (おそらく他の画像関連の操作) に由来するように見えます。
問題は、大量のメモリが RAM にロードされ、アプリがクラッシュするまでオペレーティング システムに戻すことができないことです。
webview 関連のダーティ メモリについては、これでうまくいくことがわかりました。
UIImage、CALayer、または UIGraphics に相当するものはありますか?
google-chrome - Chrome Dev Toolbar の Timeline タブにある "Document count" カウンターとは何ですか?
Chrome Dev Toolbar の [タイムライン] タブにある [ドキュメント数] カウンターが何を表しているのか説明してもらえますか?
私のアプリケーションでは、iframe を使用しており、そのうちの 1 つの一連のページ内を移動しています。現在、「ドキュメント数」カウンターは 23 ~ 32 の範囲の値を示していますが、これは何を表しているのですか?
前もって感謝します。
java - 複数の Java インスタンスで同時に Java メモリ プロファイリングを自動化する
私は Java の開発に比較的慣れていないので、アドバイスを得たいと思っていました。
モジュラー Java サーバー アプリケーションのセットアップがあり、8 つの下位レベルのサービスと通信するフロントエンド インターフェイスとして機能する高レベルのサービスがあります。
本番環境では、各サービスは独自のマシンでホストされます。
すべてのインスタンスをローカルで起動する標準の SE 開発環境のプロファイリングを検討しています。現在、Eclipse と JVMmonitor を使用しています。
私の現在のワークフローでは、各サービスを手動で開始した後、Eclipse を介して手動で各サービスの監視プロセスをトリガーします。このワークフローで仕事は完了しますが、誰かが見つけたよりインテリジェントなソリューションがあると確信しています。ほとんどのフォーラム投稿は、1 つの Java インスタンスの監視のみを解決します。
他に誰かが提案するスタンドアロンの Java アプリケーションはありますか? 可能であれば、プロファイリング コードの追加は避けたいと考えています。
c++-cli - CLI プロジェクトから AccessViolationException を追跡する方法は?
別のチームが作成した C++ コードを使用する CLI ラッパーを入手しました。ソースコードに非常に大きな変更を加えたいくつかのバージョンがあるため、CLI から AccessViolationExceptions がランダムに取得されます。完全にランダムなので、例外が発生する状況を突き止めようとしましたが、成功しませんでした。
スタックトレースは次のとおりです。
私の最初のステップは、QDataStream を使用するときにインターネットで例外を検索することでしたが、何も見つかりませんでした。だから私の恐れは、いくつかの内部ポインタが壊れていることです。唯一の奇妙な点は、この例外がまったく同じ入力でランダムに発生することです。(全通話の約1~2%)
とにかく、元のソースコードをここに投稿するのは多すぎるでしょう - C++ コードで呼び出されるコードの行は数千なので、ここでの私の主な質問は、例外がどの特定の行に由来するかではなく、どのように (一般的に)この AccessViolationException を絞り込むことができます。
- どのメモリ プロファイリング ツールをお勧めしますか? 上記の QDataStream Ctor への呼び出しがこの例外の理由ではないと思います。(クラスの既に無効な状態) を検出できる部分にすぎないと思います。
- AccessViolationException からさらに情報を取得できますか? 現時点では、アプリケーションがクラッシュするだけで、Windows イベント ログからしかスタック トレースを取得できません。
- この例外の詳細情報を見つけるために、CLI で確認/変更できるヒントはありますか?
何日も (そして何晩も..) 検索した後、このバグに絶望しているので、助けていただければ幸いです。