問題タブ [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.
file - 何百もの数メガバイトのファイルを書き込んでいるときにファイルの断片化を回避するにはどうすればよいですか?
私の質問は、ハードディスクの断片化を回避する方法に似ていますか? 、しかし、サイズが 2 MB から 100 + MB の範囲の可能性がある 1 日あたり数百のファイルを生成します (その質問者は、ディスクが乱雑になることをより心配していたため、ファイルが小さいことを暗示していました。私の問題は、これらのファイルを読み取るパフォーマンスです)。これらのファイルは、一度に少しずつ書き込まれます (ログ データ)。これは、断片化を作成する最良の方法です。(データベースはオプションではありません。) コードが完全に書き込まれた後にデフラグする必要がありますが、ファイルが同じ日に読み戻されるとパフォーマンスが低下します。
それを行う方法は、 How can I limit file fragmentation while working with .NET?によって提案されているようです。; 彼らは詳細が不足しています(そして私はC ++を使用しています)。最初に SetFilePointerEx() と SetEndOfFile() を使用してファイルのサイズを 2 MB に設定し、ファイルが割り当てられたサイズに達したら、観察された増加率に基づいてサイズを変更します。その後、書き込みが完了したら、実際のデータ サイズにリサイズします。
私が目にする 1 つの落とし穴 (実際にはhttp://www.cplusplus.com/forum/windows/22114/で指摘されています) は、アプリがクラッシュしたり、コンピューターがシャットダウンした場合に起こることです。現在、ファイルに不明なデータがあり、Windows でそれを検出する方法がありません。これは、ファイルごとまたは単一のファイルに書き込まれたデータの量を追跡するためにファイルを作成することを示唆しています。より良い戦略はありますか?おそらく、後で検出できるように、各書き込みの後に十分なゼロを書き込む (そして、次の書き込みの準備ができるようにバックアップする) でしょうか?
私が見逃した他の問題はありますか?
sql - 配布用のテーブルの断片化ORACLESQL
配布のためにテーブルを水平方向に断片化することを具体的に扱うSQLのサブセットはありますか?
店舗間で配布する在庫テーブルを断片化する必要があります。私は完全な解決策を探しているのではなく、正しい方向にうなずきます。
私が望むものと同様のIBMの例があります(私は思います)
しかし、Oracleの例が必要です(最大11g2)。
sql-server - 紛らわしいデータを返す TSQL インデックス フラグメンテーション クエリ
次のように、データベース内のインデックスの断片化を表示するための非常に単純な標準クエリがあります。
しかし、実行すると、まったく同じデータ (同じテーブル名、インデックス名、およびインデックスタイプ) がさまざまな断片化率で複数回返されることがわかります。以下に例を示します。
これらの結果がわかりません。SSMS でテーブルを開き、インデックスを開き、フラグメンテーション ページに移動すると、最小の 1.71% がフラグメンテーションであることがわかります。これらの他のフラグメンテーション番号はどこから来ているのでしょうか? これらの結果を説明できる人はいますか? どうもありがとう。
android - DPIスケーリング係数(float)を使用してマージン(int)を設定する方法
私のAndroidアプリは480x800ピクセルの解像度で見栄えがしますが、240x400ピクセルのLDPI画面では壊れます。アクティビティで画面のスケーリング係数を取得できることはわかっています。これを使用すると、画面の解像度に応じてgetResources().getDisplayMetrics().density
正確な値が得られます。float
私のアプリでは、とを使用し、を使用RelativeLayout
しImageView
て画像のマージンを設定しましたsetMargins()
。この方法ではint
、上、左、下、右の値にピクセルを使用するため、取得したDPI係数を使用してこれらの値を設定するにはどうすればよいですか?(これはフロートです)。ありますMath.floor()
が、ピクセルを使用して非常に特定の場所に画像を配置しています。メソッドによって返されるDPI係数は、小数点以下の桁数が非常に特定されているため、にキャストしint
ても機能しません。
アップデート
また、lp.setMargins(100,200,0,0);
マージンを設定するために使用しますが、デバイスから受け取ったDPI係数を使用するためにどのような変更を加えますか?
PSプログラミングというよりは数学的な問題だと知っていますが、数学が苦手です。ごめんなさい。
file - データ変更時のファイルの断片化
ファイルの途中にいくつかの文字を追加すると、その操作はファイルの断片化を引き起こしますか?
データをファイルに保存し、時々更新したいだけです。だから...私が多くの変更を加えたとき、それはパフォーマンスの問題に悪いのでしょうか?
tcp - IP フラグメンテーションと TCP ACK
元のパケットがフラグメント化されている場合に TCP_ACK がどのように機能するかについて質問があります。
たとえば、元のパケット サイズは 1,500*N バイトで、MTU は 1,500 です。次に、パケットは (おおよそ) N 個のパケットに分割されます。この場合、受信者はどのように TCP_ACK を送信者に送信しますか? Wireshark で確認したところ、受信側は断片化された 2 つのパケットごとに TCP_ACK を送信しているようです。そうですか?
これについての参考文献または説明を教えてください。ありがとう。
sql - OpenQuery の使用に挿入すると大規模な断片化が発生する
次のコードを使用して、Oracle DB から SQL Server に毎日テーブルをインポートします。
上記により、「mytable」の非クラスター化インデックスで大規模な断片化 (90% から 99%) が発生します。以下のコードを実行すると
非クラスター化インデックスで 1% から 3% の断片化が発生します。これは何が原因ですか?どちらのステートメントもテーブルを切り捨て、新しいデータを空白のテーブルに挿入しています。
.net - C# での大規模で高速かつ頻繁なメモリ割り当て中の OutOfMemoryException の回避
私たちのアプリケーションは、大量のデータ (たとえば、数十から数百メガバイト) に対して配列を継続的に割り当てます。これらのデータは、破棄されるまでの短い時間存続します。
これを単純に行うと、大きなオブジェクト ヒープの断片化が発生し、現在ライブ オブジェクトのサイズが過大ではないにもかかわらず、最終的に OutOfMemoryException でアプリケーションがクラッシュする可能性があります。
過去にこれをうまく管理してきた 1 つの方法は、配列をチャンクアップして、最終的に LOH にならないようにすることです。これは、ガベージ コレクターによってメモリを圧縮できるようにすることで断片化を回避するという考え方です。
最新のアプリケーションは、以前よりも多くのデータを処理し、このシリアル化されたデータを、別の AppDomains または別のプロセスでホストされているアドイン間で非常に頻繁に渡します。以前と同じアプローチを採用し、メモリが常にチャンク化されていることを確認し、大きなオブジェクト ヒープの割り当てを避けるように細心の注意を払いました。
ただし、外部の 32 ビット プロセスでホストする必要があるアドインが 1 つあります (メイン アプリケーションは 64 ビットであり、アドインは 32 ビット ライブラリを使用する必要があるため)。特に重い負荷の下で、大量の SOH メモリ チャンクがすばやく割り当てられ、すぐに破棄されると、チャンク アプローチでさえ 32 ビット アドインを保存するには不十分であり、OutOfMemoryException でクラッシュします。
OutOfMemoryException が発生した瞬間に WinDbg を使用すると、次のようになり!heapstat -inclUnrooted
ます。
!dumpheap -stat
これを見せてください:
これらは、メモリ使用量が過度ではなく、大きなオブジェクト ヒープが予想どおり非常に小さいことを示しています (したがって、ここでは大きなオブジェクト ヒープの断片化を扱っていません)。
しかし、!eeheap -gc
これを示しています:
ここで私を驚かせたのは、最後の SOH ヒープ セグメントが 0x73b41000 で始まっていることです。これは、32 ビット アドインで使用可能なメモリの限界に達しています。
したがって、私がそれを正しく読んでいる場合、私たちの問題は、仮想メモリがマネージ ヒープ セグメントで断片化されていることのようです。
ここでの私の質問は次のようになると思います。
- 私の分析は正しいですか?
- チャンキングを使用して LOH フラグメンテーションを回避するアプローチは合理的ですか?
- 現在見られているように見えるメモリの断片化を回避するための良い戦略はありますか?
私が考えることができる最も明白な答えは、メモリ チャンクをプールして再利用することです。これは実行できる可能性がありますが、メモリのその部分を自分で効果的に管理する必要があるため、むしろ避けたいと思います。
java - サイズを維持するためにdynamicBufferをトリミングします
私はChannelBuffers.dynamicBuffer()を使用して、Nettyを使用するネットワーク上の不明なサイズのメッセージの断片化を管理しています。私の質問は、バッファからreadBytes(...)を実行すると、読み取られたバイトがバッファから自動的に「トリミング」されて、時間の経過とともにばかげたサイズに成長しないようにすることです。そうでない場合は、どうすればこれを自分で行うことができますか?
ありがとう。
android - FragmentActivityのタブの一部であるViewPagerInsideFragment
可能かどうかわからないものを作ろうとしています。フラグメントタブがあり(フラグメントタブコンテナとしてFragmentActivity、TabHost、TabWidgetを使用)、各フラグメントにトップバーとして別のフラグメントがあります。これは、アイテムのタイプで構成された下部のバーと、フィルターとなる上部のバーとして見ることができます。通常のジェスチャーでフィルター間をスナップしたい。
私のアプリの動作は次のとおりです。最初のフラグメントが存在する主なアクティビティを確認できます。上部/下部のバーは表示されますが、最初の上部のバーカテゴリのビュー(フラグメント)は表示されません。他のカテゴリにスナップしようとしても、何も起こりません。
フラグメントのコードは次のとおりです。
これは、外部フラグメントのxmlです。
これは私の最初のカテゴリフラグメント(最初のフラグメント内にあるフラグメントカテゴリ)の例です。
私を助けてください :(
これは私のフラグメントアダプタです: