問題タブ [ants]
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.
.net - タスク マネージャーと ANTS プロファイラーでプロファイリングされるメモリ使用量
Silverlight アプリケーションを (ブラウザーの内外で) 最適化しています - メモリの最適化
ANTS、.Net メモリ プロファイラなど、いくつかのメモリ プロファイラを使用しました。ツールは、割り当てられたメモリが 38 ~ 40 MB であるという結果を出しました。しかし、タスク マネージャーを使用していたとき、メモリは 300 ~ 400MB でした。
では、2 つの結果の違いは何でしょうか。結果は何を意味しますか?
私は同じ質問がここで尋ねられたことを知っています。私は専門家からのより良い答えを探しています。
c# - ANTS メモリ プロファイラでメモリ リークを検出できない
いくつかのカスタム モデルを開くことができるカスタム アプリケーションがあります。アプリケーションでモデルを開いてから別のモデルを開くと、最初のモデルからメモリが解放されません。
プロファイラー (ANTS メモリー プロファイラー) でメモリ リークをプロファイリングしようとすると、アプリケーションがメモリを解放し、リークを追跡できません。どうすればこの問題を管理できますか?
c# - シングル スレッド アプリケーションが ANTS プロファイリング ツールで同期を待機中
私の Windows アプリケーションはシングル スレッドです。DB への呼び出しが多く、コストがかかっている List を操作しています (改善を試みます)。ただし、Wall-Clock time Waiting For Synchronization を選択すると 51!% が表示され、最悪の部分は利用可能なソースがありません。ここに 2 つの重要な質問があります。
1) 同期を待っているこのスレッドはどれですか (GC スレッド?) 2) 今回はどのように改善しますか?
asp.net - IIS を再起動できるように、Ants Performance Software が使用するポートを解放する方法
Ants Performance Software を使用しているときに、1 つの問題に直面しています。IIS の監視に使用しています。IIS を 8 時間以上監視するために使用しました。その後、Ants Performance ソフトウェアがハングアップし、停止することさえできなくなりました。また、そのポート番号もロックされているということは、Ants Performance がそのポートを解放していないことを意味します。そのため、今でも IIS を再起動できません。このポートが他のアプリケーションによって使用されているというメッセージがスローされているためです。これを処理する方法を誰か助けてください。ありがとう。
c# - ジェネレーション 1 ヒープは、空き領域としてメモリのギグを消費します
製品の 1 つが本番環境で GB 単位のメモリを消費するという長期的な問題がありました。サーバーでメモリ不足の警告が表示されることがよくありますが、ついに今日、メモリプロファイラーと一緒に座って、メモリがどこに向かっているのかを確認する機会がありました. 開発中、同じデータベースと構成で、アプリケーションのプライベート ワーキング セットは 450MB です。本番サーバーでは、そのプロセスに割り当てられたメモリの量は 3.7GB です。
Ants Memory Profiler を使用して、そのメモリの 2.906GB がジェネレーション 1 ヒープに割り当てられていることを確認しました。
この量のメモリは、データベースから大量のデータをロードしていくつかのキャッシュを生成するため、アプリケーションの起動時に使用されます。ただし、上記のグラフのすべてのデータが割り当てられているが使用されていないという事実からわかるように、すべてがクリーンアップされます。完全な概要は次のとおりです。
ご覧のとおり、LOH はほとんど空で、断片化されていません。CompactOnce を適切な GCSettings 列挙型に具体的に設定しない限り、LOH が圧縮されないことはわかっています。しかし、ジェネレーション 0 から 2 のヒープは圧縮され、空き領域が解放されるはずだという印象を受けましたか? それとも、CLR は、その量のメモリが一度消費されたので、アプリケーションが再び同じ量のメモリを必要とする場合に備えて、そのメモリをアドレス指定し続ける必要があると想定していますか?
私にとって、私たちのアプリは約 600 ~ 700 MB しか消費しないはずです (そのほとんどは CLR です)。そう:
- この空き領域が割り当てられたままであり、開発用ラップトップではなく運用サーバーにのみ割り当てられている理由を知っている人はいますか?
- この空きメモリを gen 1 ヒープから手動で解放する方法はありますか?
c# - 特定の実行時間後にメモリ不足の例外が発生するが、C# アプリケーションのプライベート バイトが増加しない
NHibernate (バージョン 3.1.0.4000) を使用して [構成に応じて] SQL Server CE (バージョン 3.5) / (MySQL 5.7.11 コミュニティ) データベース テーブルにレコードを書き込むアプリケーションがあります。
データベーステーブルへの保存を行うメソッドは以下のような構造になっているので、正しく破棄する必要があります
約 1 週間の重い作業 (数十万のレコードが書き込まれた場所) の後、アプリケーションは動作を停止し、メモリ不足エラーをスローします。
それで:
- SQL Server CE を使用すると、データベースが破損し、手動で修復する必要があります
- MySQL では mysqld デーモンが終了し、再起動する必要があります
ANTS Memory Profiler (SQL CE 構成を使用) を介してアプリケーションのメモリ使用量を監視してきましたが、驚いたことに、アプリケーションの「プライベート バイト」はまったく増加していないようです。これは、ANTS とリソースマネージャー。
それでも、(このようなエラーが表示された後) アプリケーションが強制的に閉じられると、タスク マネージャーの「物理メモリ使用量」が約 80% から 20 ~ 30% に低下し、他のプロセスを再び開始することができます。別のメモリ不足の例外。
いくつかの調査を行ったところ、次のことがわかりました。
プライベート バイト、仮想バイト、ワーキング セットとは何ですか?
プライベート バイトに関する最後の部分を引用します。
Private Bytes は、実行可能ファイルが使用しているメモリ量の合理的な概算であり、メモリ リークの潜在的な候補のリストを絞り込むのに役立ちます。数値が絶え間なく絶え間なく増加している場合は、そのプロセスでリークが発生していないかどうかを確認する必要があります。ただし、これは漏れがあるかどうかを証明するものではありません。
リンクされたトピックの残りの部分を考慮すると、「プライベート バイト」には、リンクされたアンマネージ dll によって割り当てられたメモリが含まれる場合と含まれない場合があるため、次のようになります。
非管理メモリに関する情報も報告するようにANTSを構成しました(モジュールセクションによる非管理メモリの内訳)。次の2つのモジュールの1つ(特定のsessionfactory設定に応じて)がますます多くのスペースを占めることに気付きました(互換性のある比率で)約 1 週間でコンピューターのメモリが不足します) :
- sqlceqp35
- MSVCR120
現在の結果を考慮して、次のテストを計画しています。
- 休止状態のバージョンを更新する
- 現在の nhibernate sessionhelper 構成をさらに分析しようとしています
- WPF ユーザー インターフェイスなしで空のコンソール アプリケーションを作成する (はい、このアプリケーションは WPF を使用します) 問題を再現できるようになるまでコードを追加します。
なにか提案を?
編集 30/06/2016:
セッションファクトリの初期化は次のとおりです。
SESSION FACTORY: (カスタム ドライバーは、4000 文字以降の切り捨てを回避するためのものです)
編集 07/07/2016
要求に応じて、GetSession() は次のことを行います。
c# - このコードで動的に生成されるアセンブリはどこですか?
Excel スプレッドシートを生成するためのハイブリッド Excel Interop/EPPlus アプリは、実行するたびに徐々に遅くなります。
この理由を突き止めるために、ANTS Memory Profiler をダウンロードしてアプリを実行しました。
ANTS MP は、「CLR に読み込まれたアセンブリ」の詳細で、2 つの動的に生成されたアセンブリがあることを示しています。1 つは "InitializeExcelObjects()" メソッドにあります。これは、Excel.Application と関連オブジェクトを作成するため、理にかなっています。しかし、(おそらく?) アセンブリをロードする 2 番目の方法は次のとおりです。
...そして、関係するのはこれです:
...これは異常なことは何もしません (範囲はコード内のいたるところに割り当てられているため、これが他のものとは異なり、アセンブリのスポーナーと見なされるのはなぜですか)?
範囲が割り当てられたのはこれが初めてだからですか? それが完了すると、一部のアセンブリが動的に読み込まれますか (一度だけ)?
問題のメソッドを呼び出すコードは次のとおりです。
これは予想されることですか (この時点でアセンブリが動的に読み込まれるため)、それとも、経験しているパフォーマンスが徐々に悪化していることと関係があるのでしょうか?
アップデート
Glenn Ferrie のコメントに基づいて、この方法は興味深いかもしれません。
asp.net-mvc - Entity Framework の SQL コードを実行するコードを調べる
私は、ANTS やその他の同様の代替手段など、いくつかの Entity Framework プロファイラーの使用を開始しました。プロファイラーが分析した後、Entity Framework によって生成された SQL クエリ形式ですべての Entity Framework のボトルネックを一覧表示します。しかし、コード内のクエリを追跡できません。その SQL クエリを実行するコード行を知ることは可能ですか?