問題タブ [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.

0 投票する
3 に答える
119 参照

sql - アドレス空間が連続している場合、IDENTITY列のルックアップは高速ですか?

IDENTITY列( )を持つ非常に大きなテーブルがありbigint、このテーブルが削除される可能性がある場合、アドレス空間(使用可能なID)の断片化により速度が低下しますSELECTSか?


明確化:

アドレス空間の断片化とは、テーブルから行を削除するときに発生するディスク上の断片化ではなく、ID列の値に残っているギャップを意味します。

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

algorithm - バディメモリシステムにおける最悪の場合の外部フラグメンテーション

残念ながら、(バイナリ)バディメモリシステムでの最悪の場合の(外部)フラグメンテーションオーバーヘッドの見積もりを含む、自由に利用できるテキストを見つけることができません。M(1 + lg2 m)のようなものだけを見つけましたが、証拠はありません。この式は、サイズMの合計メモリを割り当てることを保証するバディヒープサイズを推定(?)します(mは割り当てられた最長のブロックです)。この推定は、少なくともm=2では粗すぎるようです。また、その証拠は興味深いでしょう。

この件に関する説明やリンクをいただければ幸いです。

0 投票する
3 に答える
2491 参照

c# - ラージオブジェクトヒープメモリにメモリを事前に割り当てます

私はC#アプリケーションに取り組んでいますが、多くのオブジェクトがラージオブジェクトヒープでメモリ割り当てを取得しているため、このアプリケーションはメモリ不足に直面しています。

私のC#アプリケーションは(文字列オブジェクトとして)多くの大きなファイルで動作する必要があるため、この文字列型オブジェクトのメモリは、大きなオブジェクトヒープから何度も割り当てられます(したがって、LOHの断片化につながります)。

文字列は不変オブジェクトであるため、LOHの新しいメモリは常にこのオブジェクトに割り当てられます。私の質問は、大きなオブジェクトヒープにメモリを事前に割り当てて、常に同じメモリを文字列オブジェクトに割り当てる方法はありますか。

詳細は次のとおりです。前述したように、私はこれらの大きなファイルを処理しています。処理を行うには、文字列に変換する必要があります。stringBuilderを使用している場合でも、Stringに変換するとすぐに、このための別のメモリがLOHに割り当てられるため、あまり役に立ちません。

したがって、メモリに100 KBを割り当てることを期待していました。新しいファイルを読み取って文字列に変換するたびに、これらの100KBが割り当てられます。

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

vb.net - オブジェクト配列からバイト配列 - Marshal.AllocHGlobal フラグメンテーション クエリ

この 2 年前の投稿でFredrik Mörkの回答にコメントを投稿するのは公平だとは思わなかったので、代わりに新しい質問として質問したいと思いました...

注意: これは決して答えの批判ではありません.メモリ管理/マーシャルクラスを掘り下げる前に、これをすべて理解しようとしています.

その答えでは、関数GetByteArrayは、ループ内で、指定された配列内の各オブジェクトにメモリを割り当てます。

前述の投稿の GetByteArray 関数は、提供された配列の合計サイズにメモリを割り当てることでまったく恩恵を受けましたか?

答えに示されているように、メモリを割り当てると、何らかの断片化が発生するのではないでしょうか? 断片化があると仮定すると、懸念すべき影響は多くありますか? 私が示した方法でメモリを割り当てると、IntPtr.ToInt## を呼び出して全体的な割り当てポインターからポインター オフセットを取得する必要があるため、基礎となるアーキテクチャをチェックして、正しいメソッドが使用されていることを確認する必要があります*1またはより良い方法はありますか?(x86/64 によっては ToInt32/ToInt64?)

*1 間違った IntPtr.ToInt## を呼び出すとオーバーフロー例外が発生することをどこかで読みました。そのステートメントで私が意味することは、私が使用するだろうということです:

VB.Net Marshal クラスとメモリ割り当てに関するいくつかの記事を読みました。以下にリストされていますが、他の良い記事を知っていれば、私はすべて耳にします!

http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.aspx

http://www.dotnetbips.com/articles/44bad06d-3662-41d3-b712-b45546cd8fa8.aspx

これまでの私のお気に入り: http://www.codeproject.com/KB/vb/Marshal.aspx

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

android - 「411 Length required」 - Android API 10 以下を使用した Google Docs Api からの応答

私は Android デバイス用のアプリケーションを開発しています。その一部は、ユーザーの Google ドキュメントとデバイス ストレージの間でダウンロードとアップロードを可能にしています。私が抱えている問題は、Android API のバージョンが異なると動作が異なることです。API lvl 10 (Android 2.3.3) で開発のほとんどを行ってきました。仮想デバイスでは問題ありません (この API レベル以上でテストする実際のデバイスはありません)。API レベル 8 (2.2.x) 以下のデバイスとエミュレーターで、再開可能なアップロード セッションの開始を要求すると、Google Docs Api から 411 Length Required エラーが発生します。これは、API レベル 10 のエミュレーターで同じアプリケーションを実行している場合には発生しません。

私は Eclipse で開発しており、Google API Java Client 1.4.1-beta を使用して Docs Api と通信しています。私がフォローしている Google Docs API のドキュメントは、http ://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html にあります。

上記のドキュメントによると、再開可能なアップロード セッションを開始するには、空の POST 要求を送信します。ユーザーの Google ドキュメントの「ルート」の場合、アドレスは「https://docs.google.com/feeds/upload/create-session/default/private/full」です。これは、(空のボディの)リクエストのヘッダーを設定する方法です:

また、HTTP に使用するライブラリは次のとおりです。

実際にヘッダーを確認するためにいくつかのパケット スニッフィングを行いましたが、見よ、異なるバージョンの Android では、実際にはヘッダーが同じように設定されていません。お気づきのように、デフォルトではリクエストは https を使用して送信されることになっているため、パケットからヘッダーを確認するために http を使用するように変更しました。結果は次のとおりです。

Android API lvl 10 のエミュレータを使用:

API レベル 7 のエミュレーターを使用する場合:

content-length ヘッダーが欠落していることに注意してください。また、ケースも異なります。これで 411 応答が返される理由が説明できますが、これを解決するにはどうすればよいですか? 明らかに、私の目的は、できればバージョン固有のコードを使用せずに、すべてのデバイス (この問題に関係のない理由で Android 1.x を搭載したデバイスを除く) で同じ動作を得ることです。

正直なところ、自分のコードに適用できる多くの適切なソリューションを思いつきません。私が考えることができた唯一のもの:

API の (非推奨の) メソッドを使用してヘッダーを別の方法で設定しても無駄です。リクエストの実際のヘッダーは同じままです。

プロパティを「0」または Integer.toString(0) に設定しても違いはありません (明らかに、ここで少し必死になっています)。

したがって、解決策を見つけることを目的としたヘルプや提案は大歓迎です。特にリクエストがあれば、より多くのコードを提供します。また、さまざまなソリューションをテストするためのパケット スニッフィングも可能です。また、これは Google Api Java Client または Android のバグである可能性が高いです。しかし、どれですか?解決策が見つからない場合は、この (疑わしい) バグをどこに報告すればよいか判断するのに十分な Android の知識がありません。したがって、犯人が実際に私のコードではないことが疑われる場合は、どのコンポーネントがヘッダーを別の方法で設定する原因になっているのかについての考えを共有してください。

編集 - アルゴはスタック トレースを要求しました。ここにあります: http://pastebin.com/yDCCLB2P

編集 - 本文は空ですが、コンテンツの MIME タイプを設定していました。content-type ヘッダーを削除してみましたが、改善はありません。上記のコードでは、この行はコメントアウトされています。

編集 - これをさらにトラブルシューティングしようとしています。これは、同じコードで 2 つの異なる方法でヘッダーを設定しようとしたときのスタック トレースです: http://pastebin.com/NkmFjYB3

同時に使用すると、互いに衝突します。いずれかを削除すると、以前と同様の結果が生成されます (Docs から 411 Length Required が要求され、要求に content-length がありません)。これらのいずれかおよび非推奨の方法 ( transport.defaultHeaders.contentLength = "0"; ) を使用してリクエストを作成すると、衝突は発生しません (またはスタック トレースに表示されません)。前述の方法のいずれかを組み合わせた場合、デュアルヘッダーの衝突が発生するか、リクエストにコンテンツの長さがありません。

0 投票する
5 に答える
4620 参照

c++ - questions about memory pool

I need some clarifications for the concept & implementation on memory pool.

By memory pool on wiki, it says that

also called fixed-size-blocks allocation, ... , as those implementations suffer from fragmentation because of variable block sizes, it can be impossible to use them in a real time system due to performance.

How "variable block size causes fragmentation" happens? How fixed sized allocation can solve this? This wiki description sounds a bit misleading to me. I think fragmentation is not avoided by fixed sized allocation or caused by variable size. In memory pool context, fragmentation is avoided by specific designed memory allocators for specific application, or reduced by restrictly using an intended block of memory.

Also by several implementation samples, e.g., Code Sample 1 and Code Sample 2, it seems to me, to use memory pool, the developer has to know the data type very well, then cut, split, or organize the data into the linked memory chunks (if data is close to linked list) or hierarchical linked chunks (if data is more hierarchical organized, like files). Besides, it seems the developer has to predict in prior how much memory he needs.

Well, I could imagine this works well for an array of primitive data. What about C++ non-primitive data classes, in which the memory model is not that evident? Even for primitive data, should the developer consider the data type alignment?

Is there good memory pool library for C and C++?

Thanks for any comments!

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

android - SD カードのステータスに関する用語

SD カードの特定のディレクトリへのアクセスに依存する Android プログラムを開発しました。私たちのプログラムは、SD カードが電話で利用できるかどうかを検出し、利用できない場合はユーザーにエラー メッセージを表示します。このエラーが発生する最も一般的な使用例は、デバイスをコンピューターに接続し、SD カードをコンピューターにマウントすることです。

私たちはエラー メッセージに取り組んでいます。これは、SD カードが電話で利用できることを確認するようユーザーに指示するものです。

残念ながら、各電話メーカーは、SD カードが電話で使用できるかどうか、およびそのマウント/アンマウント方法について独自の用語を使用しているようです。たとえば、(一部の?) Samsung デバイスでは、マウント/マウント解除ボタンのある画面が表示されます。HTC Thunderbolt にはメニューがあり、そのオプションの 1 つは「充電のみ」です。Motorola デバイスは、Samsung のような動作と HTC Thunderbolt のような動作に分かれているようです。XOOM は完全に独自の仕掛けです。

だから、2つの質問:

SD カードをコンピュータではなくデバイスで使用できるようにする必要があることをユーザーに伝える一般的な正しい用語はありますか?

適切な共通用語がない場合、実行しているデバイスの種類を特定し、特定のデバイスの用語に合わせてエラー メッセージを調整する方法はありますか?

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

multicast - Zigbee pro: フラグメンテーションを伴うマルチキャストの送信

わかりました、Zigbee PRO とプロトコル インターフェイス クラスターを含む将来のプロジェクトについてブレインストーミングを行います。Zigbee ネットワークでプロトコル (バックネット) をトンネリングするようなもの。

bacnet には、ユニキャスト (対象が 1 つ) とブロードキャスト (対象が多数) のフレームがあります。どちらのフレームも bacnet ネットワーク上を移動し、zigbee ネットワークでトンネリングする必要があります。

bacnet ユニキャスト ==> Zigbee ユニキャスト。bacnet ブロードキャスト ==> zigbee マルチキャスト。

bacnet ペイロード > zigbee ペイロードの場合、zigbee ペイロードにも応じて Zigbee フラグメンテーションが関与します (フレームは小さなフレームで壊れます)。

ただし、Zigbee フラグメンテーションは、マルチキャスト フレーム (Zigbee 仕様) では使用できません...!

その問題に対する最善のアプローチは何ですか? すべての Zigbee デバイス間でバインディングを作成することで、これを回避できますか?

ありがとう

参照: http://www.bacnet.org/Addenda/Add-135-2008q.pdf

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

android - Sidekick 4G での Android Stackoverflow エラー

私のレイアウトの1つは、以下に示すようにスタックオーバーフローエラーをスローしているようです

私のレイアウトはこのようなものです

つまり、Layout Container としての ScrollView 、その子としての RelativeLayout 、および RelativeLayout の子としての 6 (TextView+Seekbar) ペアのようなものです。

現在、レイアウトは 99% の電話で正常に動作していますが、SideKick 4G デバイスだけで Stackoverflow エラーがスローされます。SideKick 4G デバイスを持っていないので、何が問題なのかを実際にテストすることはできません。だから、誰でも私に問題の可能性についての手がかりを与えることができます.

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

sql-server - SQL Server:12%のインデックススキャン密度と50%の断片化。「悪い」はどれくらい悪いですか?

どのくらいの断片化が悪いですか?スキャン濃度が低すぎるのはどれくらいですか?スキャン密度はどれくらい悪いですか?

次のインデックス密度とフラグメンテーションレベルのテーブルがあります。

最適化されたばかりであることがわかりますTransactionEntries17。そのため、スキャン密度が非常に高く、断片化が非常に低くなっています。

しかし、12%のスキャン密度はひどく低いのでしょうか?48%の断片化はひどく高いですか?

行を削除するとパフォーマンスの問題が発生します(インデックススキャンが必要です)。インデックスの断片化は、70000ページのインデックスの巨大な点滅する赤いアラームですか、それとも可能ですが、起こりそうもない原因ですか?


SQL Server BOLから:

スキャン密度[ベストカウント:実際のカウント]

パーセンテージです。これは、実際のカウントに対するベストカウントの比率です。すべてが連続している場合、この値は100です。この値が100未満の場合、断片化が存在します。

ベストカウントは、すべてが連続してリンクされている場合のエクステント変更の理想的な数です。実際のカウントは、エクステントの変更の実際の数です。

論理フラグメンテーション

インデックスのリーフページのスキャンから返された順序が正しくないページの割合。この数はヒープには関係ありません。アウトオブオーダーページとは、インデックスに割り当てられた次の物理ページが、現在のリーフページの次のページポインタが指すページではないページです。

ただし、断片化のレベルが高すぎるため、減らす必要があるというガイダンスはありません。また、スキャン密度が低すぎるため、増やす必要があるというガイダンスもありません。