タグ付けされた質問 「memory」

メモリとは、コンピュータまたはその他のデジタル電子デバイスで使用するために、プログラムまたはデータを一時的または永続的に格納するために使用される物理デバイスを指します。

11
一般的にシステムがスタックを廃止し、メモリ管理にヒープを使用する方が効率的ですか?
スタックで実行できることはすべてヒープで実行できるようですが、ヒープで実行できるすべてがスタックで実行できるわけではありません。あれは正しいですか?次に、簡単にするために、特定のワークロードでパフォーマンスが少し低下したとしても、1つの標準(つまり、ヒープ)を使用する方が良いのではないでしょうか。 モジュール性とパフォーマンスのトレードオフを考えてください。これはこのシナリオを説明する最善の方法ではないことを知っていますが、一般的に、パフォーマンスが向上する可能性がある場合でも、理解と設計の単純さはより良い選択肢になると思われます。
14 memory 

2
派生クラスが生の動的メモリを割り当てない場合、なぜ基本クラスに仮想デストラクタが必要なのですか?
次のコードはメモリリークを引き起こします。 #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void initialize_vector() { for (int i = 0; i < 1000000; i++) { vec.push_back(i); } } }; …

2
Smalltalkの「become:」の用途は何ですか?
become:Smalltalk のメッセージは、1つのオブジェクトを別のオブジェクトに変更し、そのオブジェクトへのすべての参照に影響を与えます。 この言語機能にはどのような用途がありますか?実際のコードで使用されますか?それは単なる好奇心ですか?それを使用するのは良い/悪い習慣と見なされますか?

3
負の符号付き値はどのように保存されますか?
符号付き整数の最大値と最小値についてこのビデオを見ていました。 正の符号付きの値の例を挙げます-0000 0001最初のビットは数値が正であることを示し、最後の7ビットは数値そのものです。したがって、+ 1と簡単に解釈されます。 次に、負の符号付き値の例を取り上げます。10000000は-8になります。さて、コンピューターは最初のビットのために負の値であることを理解できますが、000 0000が-8を意味することを地獄はどのように理解していますか? 一般的に、負の符号付きの値はコンピューターでどのように保存/解釈されますか

3
Foreachループと変数の初期化
これらの2つのバージョンのコードに違いはありますか? foreach (var thing in things) { int i = thing.number; // code using 'i' // pay no attention to the uselessness of 'i' } int i; foreach (var thing in things) { i = thing.number; // code using 'i' } または、コンパイラは気にしませんか?違いについて言えば、パフォーマンスとメモリ使用量という意味です。..基本的には単に違いがありますか、コンパイル後に2つが同じコードになりますか?
11 c#  performance  memory 

2
Haskellのメモリ効率-より良いアプローチはどれですか?
修正された2次元文法構文に基づいて、マトリックス圧縮ライブラリを実装しています。データ型に対して2つのアプローチがあります-メモリ使用量の場合、どちらが良いでしょうか?(何かを圧縮したい;))。 文法には、プロダクションが4つだけの非ターミナル、または右側にターミナルが含まれています。同等性チェックと文法最小化のためにプロダクションの名前が必要になります。 最初: -- | Type synonym for non-terminal symbols type NonTerminal = String -- | Data type for the right hand side of a production data RightHandSide = DownStep NonTerminal NonTerminal NonTerminal NonTerminal | Terminal Int -- | Data type for a set of productions type ProductionMap = Map …

3
プロセスからメモリを読み取るにはどうすればよいですか?OSによって違いますか?
経験豊富なウェブ開発者であるが、初心者の「低レベル」プログラマーである私にとって、このようなことはまだ一種のブードゥー教です。 メモリブロックを見つけて、それを読み取ること(たとえば、鉱山のゲームでタイマーを読み取ること)を開始する方法に興味がありますか?これはOS / OSバージョンによって異なりますか?

3
大量のRAMを必要とするアプリケーションにC ++またはJavaを選択しますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 私は、主にプロセッサに依存し、ヒープ使用量が重い(少なくとも数ギガバイト)科学アプリケーションを考えています。1年のどの時期でもC ++を喜んで使用しますが、この場合、C ++メモリマネージャーにとって自然な断片化がJavaの圧縮コレクターの利点と比較して重大な問題になるのではないかと思います。 誰もこれに関連する実世界の例を指すことができますか?
11 java  c++  memory  big-data 


6
スレッドは仮想メモリまたは実メモリを使用しますか?
Linuxサーバーを最適化して、プロセスごとに10,000スレッドを処理しようとしていましたが、現在は382スレッドしか処理していません。あたりとして、この記事で、次の式は、可能な全スレッドを調べるために使用されます。 number of threads = total virtual memory / (stack size*1024*1024) つまり、スレッドはすべてのデータを仮想メモリに格納します。そして、私の知る限りでは、仮想メモリは、RAMやキャッシュではなくハードディスクに保存されているLinuxマシンのスワップスペースです。 だから私の質問は、スレッドがデータを処理/格納するために格納するためにハードディスクを使用するかどうかです。 はいの場合、これはパフォーマンスに影響しませんか?それらをRAMまたはキャッシュに置くことでパフォーマンスを向上させることはできますか?どうやって? いいえの場合、スレッドはどのように機能しますか? 更新: 役に立たないの答えによると、仮想メモリは大まかに構成されたシステムです: 物理メモリ(RAM) アタッチしたスワップファイル 仮想アドレスが物理メモリで使用できない場合に仮想アドレスを物理アドレスに変換し、ページフォールトを発行するためのハードウェアサポート (カーネル)ソフトウェアサポート:ハードウェアが使用するルックアップテーブルを管理し、必要に応じてスワップからページをプルすることにより、これらのページフォールトを処理します。 したがって、仮想メモリ上にあるものはすべて、RAM(実メモリ)とハードディスク(スワップファイル)にまとめられます。そしてとしてジェームズ彼の答えの中で説明 HDDは、このようなLRUなどalgorithimsを使用してカーネルによって取られる対ラムの決定。

2
表現力とプロダクションバグ率に相関する、プログラミング言語ランタイムのメモリ消費量の比較研究はありますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 5年前休業。 多くの比較研究があり、1つの言語または別の言語を使用して構築されたアプリケーションのランタイムパフォーマンスに関しては、オンラインで入手できます。企業によって駆動されるものもあれば、学術的なものもあれば、個人的な実験報告だけのものもあります。 また、次のようなプログラミング言語とそのツールの副作用に関する比較研究のかなりのシェアを得ています。 ビルド時間、 ポストプロダクションバグ検出の可能性、 表現力、 等... しかし、私は最近、他の何よりもプログラムのメモリ消費量にますます困惑しています。これは、ムーアの法則が生のパフォーマンスに関して私たちの側にある一方で、他のボトルネックがより重要であることに気づくようになったという事実から来ている可能性があります。それと、ハードウェアを頻繁に更新することはあまりありません。「古い」もの(4 GBのRAMを搭載した2005〜2006年の3.6 GHz Pentium 4を読んでいます)があるため、それらからすべてのジュースを搾り出すために大きなトラブルを経験することを私に要求します(OS、UIの選択、サービスとデーモンの微調整、タスクなどに使用するアプリケーションの選択...)。非常に正直に言うと、ときどき起動しtopたりprocexp、最も無害なプログラムが使用しているメモリを見て涙を流したりします。 私は上記の方向に押し続け、基本的に自分自身と使用するプログラムを制限しようとすることでこれに対処できます(その理由から、私はcliプログラムを非常に愛しています)、しかし、私は考えるしかありませんたぶん私たちはそれを間違っているのです。 現代的なニーズのための現代的なツール もちろん、高水準言語は間違いなくより優れており、それらの重荷の価値を正当化します。いくつかの設計上の選択は、多くのツールチェーンで、当時は十分な(またはおそらく意図された)理由で行われました。共有ライブラリ、メモリモデル、プリプロセッサ、タイプシステムなど...しかし、最新のハードウェアでは、他のものよりも実行可能性が高いものもあるので、この問題に関するいくつかの深刻な研究に興味があります。 ですから、私の質問は、ベンチマークゲームなどの言語の基本的なランタイムメモリ消費量の比較に焦点を当てたペンダントがあるのでしょうか。 さらに、これを他のパラメーターと相互参照するいくつかの研究がありますか(たとえば、この記事が他の基準についてもベンチマークゲームに基づいて行ったのと同様)。

11
無限ビットマップ[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 実行時にビットマップを作成したいのですが。ビットマップはすべての側でスケーラブルである必要があり、ピクセルアクセスは効率的に静かである必要があります。 いくつかの図http://img546.imageshack.us/img546/4995/maptm.jpg 図に示されているコマンドの間と後に、Map.setPixel()とMap.getPixel()はビットマップに保存されたデータを設定/返す必要があります。 setPixel()/ getPixelができるだけ高速になるような方法でメモリを割り当てる方法の概念だけの実装は期待していません。
10 concepts  memory 

1
キャッシュラインとメモリページの関係
正しければ、メインメモリのページは、メインメモリとハードディスクなどの外部ストレージデバイスとの間でデータを転送するための最小の単位単位です。メインメモリのキャッシュラインは、メインメモリとCPUキャッシュ間のデータ転送の最小単位です。 ページサイズは常に、またはキャッシュラインサイズの自然数になるのが最適ですか?キャッシュラインサイズが64バイトで、メモリページサイズが4KBの場合、各ページには4KB / 64バイト== 64キャッシュラインがあります。 ページとキャッシュラインはどちらもメモリ内の固定オブジェクトですか?または、特定のサイズのメモリの連続したブロックだけであり、メモリ内のどこにでも開始して浮動させることができますか? キャッシュラインが複数のページにまたがることは常に可能ですか?つまり、キャッシュラインの一部がページにあり、キャッシュラインの他の部分が別のページにあるのですか? ありがとう。
9 memory  caching 

5
サーバーの終了時にオブジェクトを正しく破棄する
大規模なC ++プロジェクトに取り組んでいます。REST APIを公開するサーバーで構成され、他の多くのサーバーで構成される非常に広範なシステムにシンプルでユーザーフレンドリーなインターフェースを提供します。コードベースは非常に大きく複雑であり、適切な設計を事前に行わずに時間をかけて進化しました。私の仕事は、新しいコードを実装し、古いコードをリファクタリング/修正して、より安定して信頼できるようにすることです。 現時点では、サーバーは、プロセスが終了しても終了も破棄もされない、長期間存続するオブジェクトを多数作成します。これにより、Valgrindはリーク検出にほとんど使用できなくなります。何千もの(疑わしい)正当なリークと「危険な」リークを区別することは不可能だからです。 私の考えは、すべてのオブジェクトが終了前に確実に破棄されるようにすることですが、私がこの提案をしたとき、私の同僚と上司は、OSがとにかくそのメモリを解放することを指摘し(誰にとっても明らかです)、オブジェクトを破棄することに反対しましたサーバーのシャットダウンを遅くします(現時点では、これは基本的にへの呼び出しですstd::exit)。私は、「クリーンな」シャットダウン手順を持っているからといって、それを使用しなければならないということを必ずしも意味しないと答えました。焦りを感じたらいつでも呼んでstd::quick_exitもいいしkill -9、ただプロセスを呼んでもいい。 彼らは、「ほとんどのLinuxデーモンとプロセスはシャットダウン時にわざわざメモリを解放しない」と答えました。私はそれを見ることができますが、私はすでにメモリ破損、二重解放、および初期化されていない変数を見つけたので、プロジェクトが正確なメモリデバッグを必要とすることも事実です。 あなたの考えは何ですか?私は無意味な努力を追求していますか?そうでない場合、同僚や上司をどのように説得できますか?もしそうなら、なぜ、そして代わりに私は何をすべきですか?
9 c++  debugging  memory 

2
スタック+ヒープ+静的メモリモデルに代わるものはありますか?
私が見たすべてのプログラムは、データメモリを1つ以上の呼び出しスタック(通常は固定サイズですが、そうでない場合もあります)、ヒープ、および静的メモリに編成します。最近、スレッドローカルの静的ストレージもこれに追加されました。 コールスタックなしなど、根本的に異なる方法でデータメモリレイアウトを整理する試みはありますか?または、同じことを達成する別の方法でメモリを整理しますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.