問題タブ [fragmentation]
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# - 例外をスローするのではなく、ラージ オブジェクト ヒープが大きくなるのはなぜですか?
以前の質問で、LOH で割り当て可能な最大ブロックを最大化するプログラム的な方法を尋ねました。まだ問題が発生していますが、LOH のサイズが大きくなったり小さくなったりする理由を理解しようとしていますが、LOH の断片化が原因であると他の人が報告したものと一致する OutOfMemoryExceptions がまだ見られます。 .
たとえば、StringBuilder.EnsureCapacity を呼び出すと OutOfMemoryException がスローされるのに、別の場所から別の呼び出しを行うと LOH のサイズが拡大するのはなぜですか (パフォーマンス カウンターによると、拡大と縮小が繰り返されます)。
memory - メモリの断片化 @ boost::asio?
答えが得られなかった質問、つまり非常に重要な問題に対処する質問にかなり行き詰まっています。boost::asio でのメモリの断片化。
ドキュメントでもここSOでも何も見つかりませんでした。
boost::asio の非同期関数、たとえば async_write() & async_read_some()は常に何かを割り当てます。(私の場合、VC9 Debug ビルドでは、それぞれ 144 バイトと 96 バイトです)。
どうすればそれを知ることができますか?
このライブラリで提供される「エコー サーバー」の例にクライアントを接続します。
「operator new(size_t size)」のコードの「new.cpp」にブレークポイントを入れました。
それから「123」を送ります。ブレークポイントにヒット!
スタック トレースを使用すると、「新しい」呼び出しのルートが、関数ハンドラーで作成した async_write() & async_read_some() 呼び出しから来ていることがはっきりとわかります。
そのため、遅かれ早かれメモリの断片化が発生するため、ASIO を使用することはできません。
非同期操作では、少なくともIOCPでは、操作中に割り当てられた構造体が完了まで(ハンドラーが呼び出されたとき)使用される必要があることを理解していることに注意してください。
たとえば、IOCP では、操作 (読み取り/書き込み) ごとに OVERLAPPED 構造が必要です。
これが、メモリの断片化を心配している上記の小さな割り当てがある理由だと思います。
これらの構造をプールするにはどうすればよいですか?もちろん、プラットフォームに依存しません。
何か案が?役立つコード例はありますか? すでにこの問題を解決した方もいらっしゃると思います。
function - コードを関数に分割するときの黄金律は何ですか?
モジュール化/デカップリングのためにコードを関数とクラスに分割するのは良いことですが、やりすぎると本当に断片化されたコードになってしまい、これも良くありません。
コードを関数に分割するときの黄金律は何ですか?
android - Android の断片化による労力
Android プラットフォームの断片化により、さまざまな OEM ハンドセット属性のどのような変更により、開発者はあるプラットフォームから別のプラットフォームへの移植を余儀なくされますか?
sql-server - このシナリオでSQLサーバーページの断片化を回避するにはどうすればよいですか?
断片化を可能な限り回避することでページの使用を最適化するために、SQL挿入をテーブルに注文したいと思います。.net Windowsサービスを実行します。このサービスは、2時間ごとにデータベースからデータを取得し、将来のクエリ用に最適化します。varchar(6000)列が含まれていますが、4000バイトを超えることはめったにないと思います。実際、この列は通常600から2400の間で変化する可能性があります。切り捨てエラーを回避するために6000です。それでも、.netを使用してその列サイズを制御できます。更新も削除もありません。選択するだけです(そして2時間ごとに挿入します)。2時間ごとに約1000の挿入があります。
SqlServer2005を使用しています。ページサイズは8096バイトと言われています。テーブルに行を挿入する必要があります。行のサイズを考えると、4〜12行が1ページに収まる可能性があります。
したがって、.netからデータベースからデータを読み取り、それをメモリに保存し(おそらく、クラスタリングアルゴリズムを使用しますか?)、約1000行を挿入します。
このシナリオでページの断片化を回避または最小化する方法があるかどうか疑問に思いました。
sql - ひどく断片化されたインデックス - SQL Server 2005
私は最近、非常に断片化されたインデックス (ほとんどのインデックスが 80% 以上断片化されている) を含む、保守が不十分な運用データベースを継承しました。インデックスの再構築を行うためにマネージャーにダウンタイムを要求しましたが、残念ながら現時点ではダウンタイムは許可されていません。オンラインでのインデックスの再編成もオプションではない場合、次のことを行うことはできますか?
- 新しい本番コピーをテスト インスタンスに復元する
- インデックスの再構築、統計の更新
- テスト インスタンスから prod データベースを上書きする
- トランザクション ログを適用してデータベースを取得します。
上記の方法でもダウンタイムが必要ですが、比較的少なくなります。私はこれを行うことができるかどうかを知りたかったのですか、それとも私はただ愚かなのですか :) アドバイスしてください
RK
sql-server - クラスター化インデックスを追加/削除せずに SQL Server テーブルの断片化を減らしますか?
過去 1 年間、ゆっくりと成長している大規模なデータベース (90 GB のデータ、70 GB のインデックス) があり、その成長/変更により、インデックスだけでなく、テーブル自体にも大量の内部断片化が発生しています。
(多数の)非常に断片化されたインデックスを解決するのは簡単です-断片化の程度に応じて、REORGANIZEまたはREBUILDがそれを処理します-しかし、実際のテーブルの断片化をクリーンアップする際に見つけることができる唯一のアドバイスは、クラスター化されたインデックスを追加することですテーブルに。今後テーブルにクラスター化インデックスを作成したくないので、後ですぐに削除しますが、クラスター化インデックスを使用せずにこれを行う別の方法はありますか? これを行う「DBCC」コマンドは?
ご協力いただきありがとうございます。
c++ - メモリの断片化とは何ですか?
C++ の動的メモリ割り当てのコンテキストで、「メモリの断片化」という用語が何度か使用されているのを聞いたことがあります。メモリの断片化に対処する方法に関するいくつかの質問を見つけましたが、それ自体を扱う直接的な質問は見つかりません。そう:
- メモリの断片化とは何ですか?
- メモリの断片化がアプリケーションの問題かどうかを判断するにはどうすればよいですか? どのようなプログラムが被害を受ける可能性が最も高いですか?
- メモリの断片化に対処するための良い一般的な方法は何ですか?
また:
- 動的割り当てを使用すると、メモリの断片化が増加する可能性があると聞いたことがあります。これは本当ですか?C++ のコンテキストでは、すべての標準コンテナー (std::string、std::vector など) が動的メモリ割り当てを使用することを理解しています。これらがプログラム全体で使用されている場合 (特に std::string)、メモリの断片化が問題になる可能性が高くなりますか?
- STL を多用するアプリケーションでメモリの断片化をどのように処理できますか?
sql - 行データを変更すると、クラスター化インデックスが断片化されますか?
クラスター化インデックスには、インデックス フィールドだけでなく、すべての行データが含まれていることがわかりました。断片化に関して、これが意味することを理解しようとしています。
次のようなテーブルがあるとします。
ここで、これらの行がすべてデータでいっぱいで、クラスター化インデックスの以前の行のいくつかで、Field1、Field2、Field3、および Binary を突然 null に設定したとします。
これが意味することの 1 つは、私の単純な考え方ですが、これらの値をすべて消去するとギャップが生じ、インデックスが断片化することです。行はまだ正しい順序になっていると思いますが、それは本当にインデックスの断片化ですか?
または、別の方法で考えることができます。それらがすべて最初から null で、データを挿入する場合、データを別のページにシャッフルしなければならず、インデックスの断片化も発生しますか?
さらに、LOB データが別のアロケーション ユニットに格納されていることは知っていますが、それが何を意味するのかはわかりません。Binary を null に設定 (または設定) しても、クラスター化インデックスの断片化には影響しないということですか?
android - Android 1.5 と Android 1.6 の間で大容量ストレージ API に加えられた変更点
しばらく前にSDカードに画像を保存するコードを書きました。targetSDKVersion をマニフェストに追加したところ、ファイル保存コードが機能しなくなりました。
アプリのマニフェストからtargetSdkVersionを削除しても、SDカードに何も書き込まれません。
Android 1.5 と 1.6 の間に、SD カードへの書き込みを妨げる API の変更はありますか?
ビットマップをSDカードに圧縮するテストコードです。次のマニフェスト エントリでは機能しません。
次の例外が発生します。
09-27 11:35:58.689: エラー/ImageSaver(8672): ファイルが見つかりません
targetSdkVersion を削除すると、すべてのプラットフォームで再び機能するようになります。
targetSdkVersion を設定してコードを実行するにはどうすればよいですか?