問題タブ [large-object-heap]

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 に答える
605 参照

.net - LOH への断片化を引き起こす文字列を回避する方法

私のアプリケーションは、最終的に断片化の問題を引き起こす大きなオブジェクト ヒープに入るテキスト ファイルから大量のデータを読み取ります。これらを LOH に到達させないようにするための代替設計アプローチはありますか? StringBuilder については知っていますが、テキスト ファイルから読み取ると、内部的に大きな文字列が LOH に作成されるようです。

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

.net - LOH にあるオブジェクト インスタンスのリストを取得する

マネージ ヒープにMyClassのインスタンスが数百あります。これらの一部はラージ オブジェクト ヒープにあります。以下は、さまざまなヒープ構造がどのように見えるかです

私の質問は1.ラージ オブジェクト ヒープにあるMyClass
のすべてのインスタンスのアドレスを見つけるにはどうすればよいですか。2.ラージ オブジェクト ヒープにあるMyClass のインスタンスで !ObjSize を実行する方法はありますか?

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

c# - C# 過剰なガベージ コレクション - 大きな文字列、G2 プレッシャー?

私は、Win 2k8 (.NET 4.5) 上の 64 ビット IIS で実行されている C# で大量の Web サービスを作成しています。この Web サービスは、XML ペイロードで動作し、小規模および大規模なオブジェクト (大規模なオブジェクトが主に存在する場所) に対してさまざまな操作を実行します。文字列、85k を超えるものもあります (LOH に進みます))。リクエストはステートレスであり、メモリ使用量は時間の経過とともに安定しています。リクエストごとに大量のメモリが割り当てられ、解放されていますが、メモリがリークしているようには見えません。

2 つのプロファイリング ツールによると、1 秒あたり最大 25 のトランザクションで動作し、平均呼び出しは 5 秒間持続し、時間の 40 ~ 60% を GC で費やしています。perfmon は、5 秒間で 20 の G0 および G1 コレクションを安定して示しています。 5 秒以上の G2 コレクション - G0 にとどまると予想されるデータの G2 への多くの (私たちが考える) 時期尚早のプロモーションを意味します。私が読んだすべては、これが非常に過度であることを示しています。システムは 25 tps よりも高いスループットで実行できるはずであり、GC アクティビティがこれを妨げていると想定しています。

リクエストを処理するマシンには大量のメモリ (16 GB) があり、負荷がかかっているアプリケーションは、負荷が 1 時間かかっても最大で 1 GB しか消費しません。ヒープを大きくしても必ずしも状況が改善されるわけではないことは理解していますが、予備のメモリがあります。

これが詳細に欠けていることを感謝します(時間が許せば、簡単なアプリケーションで条件を再現しようとします)-しかし、G2 GCアクティビティがこれほど多く見られる理由を誰か説明できますか? LOHに集中する必要がありますか?CLR の GC は負荷に「適応する」とよく言われますが、この場合の動作は変わらず、他のランタイムとは異なり、調整するためにできることはほとんどないようです (ワークステーション GC を試しましたが、目に見える違いはほとんどありません)。

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

c# - 中サイズのコレクション内の C# ラージ オブジェクト

私はメモリの問題にかなり慣れていません。これがばかげた質問だと思わないでください。

C# では、85,000 バイトを超えるメモリは LOH に入れられることを知っています。

サイズが 10000 ~ 20000 で、10 個のメンバー変数 (バイト型) を含むオブジェクトを持つコレクションが LOH または SOH に配置されるかどうか疑問に思っています。

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

c# - ラージ オブジェクト ヒープは収集されますか

ラージ オブジェクト ヒープに関する情報が見つかりません。断片的ではないと随所に書かれています。しかし、それは収集されていないと聞きました。

この情報を提供する記事が見つかりません。

では、LOH は収集されますか (デッド インスタンスはメモリから削除されます)、それとも収集されませんか?

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

c# - HttpWebResponses: MemoryStream.CopyTo とチャンクはどのくらい効率的ですか?

API から大きな JSON オブジェクトをダウンロードする際に問題が発生しています。通常、このドキュメントのサイズは小さいですが、場合によっては非常に大きくなります (100k 以上)。これにより、大きなオブジェクト ヒープが使用され、パフォーマンス上の懸念が生じます。

応答バイトを返すダウンローダ メソッドの内容は次のとおりです。

最終的な目標が Web 応答の内容をバイト配列に取得することである場合、これが最も効率的な方法ですか? 以前は、ストリームをチャンクで読み取るだけでした。これは、90% の時間 (JSON 応答が 85k 未満の場合) では CopyTo よりも効率が悪いと言われていますが、残りの 10% では効率的です。

私はこれについて一般的なコンセンサスを見つけることができないようです. 任意の入力をいただければ幸いです。