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

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

4
CPUレジスタとは何ですか?
この質問は、しばらくの間私を悩ませており、今日、私はそれをグーグルにするだろうと考えました。私はそれについていくつかのことを読んだことがありますが、それは私がいつもプロセッサーキャッシュと呼んでいたものと非常に似ているように見えました。 2つの間に違いはありますか、または私はそれらが同じだと思うときに正しいですか?レジスタは、実際に動作するためにCPU内にある必要がありますか? ウィキペディアによると、レジスタは、RAMに送り返される前にメモリにすばやくアクセスして変更できるCPU内の場所です。私はこれを間違って理解しましたか、またはキャッシュとレジスタは実際に同じですか?

3
一部のマシンでlong intに12バイトかかるのはなぜですか?
私のマシンでこのコードをコンパイルした後、奇妙なことに気付きました: #include <stdio.h> int main() { printf("Hello, World!\n"); int a,b,c,d; int e,f,g; long int h; printf("The addresses are:\n %0x \n %0x \n %0x \n %0x \n %0x \n %0x \n %0x \n %0x", &a,&b,&c,&d,&e,&f,&g,&h); return 0; } 結果は次のとおりです。すべてのintアドレスの間に4バイトの違いがあることに注意してください。ただし、最後のintとlong intの間には、12バイトの違いがあります。 Hello, World! The addresses are: da54dcac da54dca8 da54dca4 da54dca0 da54dc9c da54dc98 …
26 c  memory  pointers 

5
システム上のすべての空きスペースを割り当てることにより、別のプログラムからメモリを読み取ることは可能ですか?
理論的には、システム上のすべての未使用メモリを割り当て、他のアプリケーションが不要になったメモリを解放するにつれてますます多くのメモリを要求し続けるプログラムをビルドすると、最近リリースされたメモリを別のアプリケーションから読み取ることができるでしょうか? ?または、これは何らかの形で最新のオペレーティングシステムによって保護されていますか? これには実用的なアプリケーションはありません。ただ興味があります。実生活で「利用可能なすべてのメモリ」を割り当てることには、いくつかの問題があることを理解しています。 編集:明確にするために、私は特に「解放された」メモリについて尋ねています。現在別のアプリケーションによって割り当てられているメモリにはアクセスしていません。

1
Reduxのメモリ消費[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 閉じた3年前。 Reduxフレームワークは、不変の状態/純粋関数パラダイムを支持します。これは、現在のアクションに関して、前の状態から新しい状態の作成を促進します。このパラダイムの適用可能性は疑う余地がありません。 私の主な懸念は、Reduxレデューサーが呼び出されたアクションごとに以前の状態から新しい新しい状態を熱心に返すため、大量のメモリドレイン(メモリリークと混同しないでください)が多くの実際のアプリケーションで一般的に発生することです。Javascriptアプリケーションは通常、平均的なユーザーのデバイスのブラウザーで実行され、他のいくつかのデバイス固有のアプリケーションと、さらにいくつかのブラウザーのタブとウィンドウも実行できることを考慮すると、メモリを節約する必要性がますます明らかになります。 Reduxアプリケーションのメモリ消費量を従来のFluxアーキテクチャと実際に比較した人はいますか?もしそうなら、彼らは彼らの調査結果を共有できますか?

7
手動メモリ管理よりも高速なガベージコレクションのデモンストレーション
私は、ガベージコレクションが(理論的には)手動のメモリ管理よりも高速である可能性があることを、多くの場所で読んでいます(実際、自分で書きました)。 ただし、表示することは、伝えることよりもはるかに困難です。この効果が実際に作用することを示すコードを 実際に見たことはありません。 このパフォーマンスの利点を実証するコードを誰かが持っていますか(またはどこにあるかを知っていますか)?

5
メモリ破損のデバッグ
まず最初に、これは絶対的な答えのある完璧なQ&Aスタイルの質問ではないことを理解していますが、それを改善するための表現は考えられません。これに対する絶対的な解決策はないと思います。これが、Stack Overflowではなくここに投稿する理由の1つです。 先月、私はかなり古いサーバーコード(mmorpg)をより近代的で拡張/修正しやすいものに書き換えました。私はネットワーク部分から始め、サードパーティのライブラリ(libevent)を実装して、自分のものを処理しました。すべてのリファクタリングとコードの変更により、どこかでメモリ破損が発生し、どこで発生するかを見つけるのに苦労しています。 原始的なボットを実装して負荷をシミュレートしても、クラッシュが発生しない場合でも、開発/テスト環境で確実に再現することはできません(何らかの原因で発生したlibeventの問題を修正しました) 私はこれまで試しました: 地獄を破壊する-ものがクラッシュするまで無効な書き込みはありません(実稼働では1日以上かかる場合があります。1時間かかる場合があります)。これは本当に私を困惑させます。チャンス?(アドレス範囲を「広げる」方法はありますか?) コード分​​析ツール、すなわちコベリティとcppcheck。彼らはいくつかの..を指摘しましたが、コードの厄介さとエッジケースは深刻なものではありませんでした。 (undodbを介して)gdbでクラッシュするまでプロセスを記録し、逆方向に作業します。この/ sounds /は実行可能であるはずですが、オートコンプリート機能を使用してgdbをクラッシュさせるか、可能性のあるブランチが多すぎるために失われる内部libevent構造になります(1つの破損が原因でに)。ポインターが元々どの場所に/どこに割り当てられていたのかを見ることができれば、ブランチの問題のほとんどを解消できると思います。ただし、undodbを使用してvalgrindを実行することはできません。通常のgdbレコードは、使用できないほど遅くなります(valgrindと組み合わせても機能する場合)。 コードレビュー!自分で(完全に)そして何人かの友人に私のコードを見てもらうことで、それが十分に徹底的だったとは思いませんが。コードレビュー/デバッグを行うために開発者を雇うことを考えていましたが、多額の資金を投入する余裕はありません。彼が問題を見つけられなかったり、資格を持っている人がいなければ、お金はありません。 また、注意する必要があります。通常、一貫したバックトレースが取得されます。クラッシュが発生する場所はいくつかありますが、大部分は何らかの理由でソケットクラスが破損することに関連しています。ソケットではない何かを指している無効なポインタか、ソケットクラス自体が(部分的に)意味不明なもので上書きされています。よく使用される部品の1つであるため、クラッシュが最も多いと思われますが、使用されるのは最初に破損したメモリです。 全体として、この問題はほぼ2か月間(忙しく、趣味のプロジェクトが多い)忙しく、不機嫌なIRLになり、あきらめることを考えるほどイライラしています。私は問題を見つけるために他に何をすべきかについて考えることができません。 見逃した便利なテクニックはありますか?どのように対処しますか?(これについてはあまり情報がないため、それほど一般的ではありません..または私は本当に盲目ですか?) 編集: 重要な場合の仕様: gcc 4.7を介したc ++(11)の使用(debian wheezyが提供するバージョン) コードベースは約15万行です david.pfx投稿への応答で編集:(応答が遅くなって申し訳ありません) パターンを探すために、クラッシュの注意深い記録を保持していますか? はい、私はまだ周りの最近のクラッシュのダンプを持っています いくつかの場所は本当に似ていますか?どのように? さて、最新バージョン(コードを追加/削除したり、関連する構造を変更するたびに変更されるようです)では、常にアイテムタイマーメソッドでキャッチされます。基本的に、アイテムには期限が切れる特定の時間があり、更新された情報をクライアントに送信します。無効なソケットポインタは、主にそれに関連するPlayerクラス(私の知る限り有効)にあります。また、クリーンアップフェーズで、明示的に破棄されていないすべての静的クラスを(__run_exit_handlersバックトレースで)破棄する通常のシャットダウンの後、クラッシュの負荷が発生しています。ほとんどの場合std::map、1つのクラスが関与しますが、それが最初に現れるのは単なる推測です。 破損したデータはどのように見えますか?ゼロ?アスキー?パターン? まだパターンが見つかりませんでした。破損がどこから始まったのかわからないので、わかりにくいです。 ヒープ関連ですか? それは完全にヒープ関連です(gccのスタックガードを有効にしましたが、何もキャッチしませんでした)。 破損は後に発生しfree()ますか? 少し詳しく説明する必要があります。すでに解放されたオブジェクトのポインターが横になっているということですか?オブジェクトが破棄されると、すべての参照をnullに設定するので、どこかで見逃さない限り、いいえ。valgrindには表示されますが、表示されませんでした。 ネットワークトラフィック(バッファサイズ、リカバリサイクル)に特有のものはありますか? ネットワークトラフィックは生データで構成されます。したがって、char配列、(u)intX_tまたはより複雑なもののための(パディングを削除するための)パックされた構造体には、各パケットに、予想されるサイズに対して検証されるidおよびパケットサイズ自体で構成されるヘッダーがあります。サイズは10〜60バイトで、最大の(内部「起動」パケット、起動時に1回起動される)サイズは数Mbです。 多くの生産が主張します。損傷が伝播する前に、早期かつ予想どおりにクラッシュします。 私はかつてstd::map破損に関連したクラッシュを経験しました。各エンティティには「ビュー」のマップがあり、それを見ることができる各エンティティはその中にあります。前後に200バイトのバッファーを追加し、0x33で埋め、各アクセスの前にチェックしました。腐敗は魔法のように消え去りました。私は何かを動かして、他の何かを腐敗させたに違いありません。 戦略的なロギング。これにより、直前に何が起こっていたかを正確に把握できます。回答に近づいたら、ログに追加してください。 それは機能します。 必死になって、状態を保存して自動再起動できますか?私はそれを行う生産ソフトウェアのいくつかの部分を考えることができます。 やややる。このソフトウェアは、メインの「キャッシュ」プロセスと、すべてのものを取得して保存するためにすべてキャッシュにアクセスする他のワーカープロセスで構成されています。そのため、クラッシュごとに大きな進歩を失うことはありません。それでもすべてのユーザーが切断されるなど、間違いなく解決策ではありません。 並行性:スレッド化、競合状態など 「非同期」クエリを実行するmysqlスレッドがありますが、これはすべてそのままで、すべてのロックを備えた関数を介してデータベースクラスと情報を共有するだけです。 割り込み 30秒間のサイクルを完了しなかった場合に停止するロックを防ぐための割り込みタイマーがありますが、そのコードは安全なはずです: if (!tics) { abort(); } else …
23 c++  debugging  memory 

5
IISがデフォルトで1740分ごとにアプリケーションプールをリサイクルするのはなぜですか?
既定でIISは既定でアプリプールをリサイクルするのはなぜですか?おそらくほとんどのWebアプリがメモリを慎重に管理していないこと以外に、特定の理由はありますか?アプリケーションのメモリを適切に管理している場合、先に進んでこれをオフにしても安全ですか?リサイクルをオフにしたり、オンにしたままにしておくと、潜在的なマイナス面、プラスのメリットは何ですか
22 asp.net  memory  iis 

2
スタックとヒープのサイズはOSによってどのように制限されますか?
注:特定のOSが回答できるようにする必要がある場合は、Linuxを検討してください。 プログラムを実行するたびに、スタック用の領域とヒープ用の領域を備えた、実行する仮想メモリ空​​間が与えられます。 質問1:スタックとヒープに静的なサイズ制限(たとえば、それぞれ2ギガバイト)がありますか、またはこの制限は動的で、プログラムの実行中にメモリ割り当てに従って変化します(つまり、使用される合計4ギガバイト)両方なので、プログラムがスタックのみを使用する場合、4ギガバイトのスタックを持つことができますか? 質問2:制限はどのように定義されますか?使用可能なRAMメモリの合計ですか? 質問3:テキスト(コード)セクションとデータセクションについてはどうですか、どのように制限されていますか?
21 linux  memory  stack  heap 

3
巨大な配列をいっぱいにすることなく大きな問題を生成するプロフェッショナルな方法:C ++、配列の一部からメモリを解放
私は物理シミュレーションを開発していますが、プログラミングが初めてなので、大規模なプログラムを作成するときに問題が発生し続けます(主にメモリの問題)。動的メモリの割り当てと削除(新規/削除など)については知っていますが、プログラムをどのように構成するかについて、より良いアプローチが必要です。 非常に大きなサンプリングレートで、数日間実行されている実験をシミュレートしているとしましょう。10億個のサンプルをシミュレートし、それらを実行する必要があります。 非常に単純化されたバージョンとして、プログラムは電圧V [i]を取り、それらを5で合計すると言います。 すなわち、NewV [0] = V [0] + V [1] + V [2] + V [3] + V [4] NewV [1] = V [1] + V [2] + V [3] + V [4] + V [5] 次に、NewV [2] = V [2] + V [3] + V [4] + …
20 c++  data  memory  array  dynamic 

5
保護されたメモリの前にどのようにセグメンテーションフォールトをデバッグしましたか?
さて、Cのポインターでプログラミングの間違いを犯すと、いいセグメンテーションフォールトが発生し、プログラムがクラッシュし、デバッガーはどこが間違っているのかを教えてくれます。 メモリ保護が利用できなかったとき、彼らはどうやってそれをしましたか?DOSプログラマーが、ミスをしたときにOS全体をいじり、クラッシュさせるのを見ることができます。仮想化は利用できなかったため、再起動して再試行するだけでした。それは本当にそのように行きましたか?

2
誰でもメモリ内のフロートの表現を説明できますか?
前の質問を読んだので、これは重複した質問ではありません。 誰でも私を理解するのを助けることができhow float values are stored in the memoryます。 私の疑問は、ここでフロート値に含まれる ' .'(for example 3.45)'.'がメモリ内でどのように表現されるか? 誰かが図で私を明確にしてくれますか?

4
メモリリークを修正することはどれほど重要ですか?
Valgringによって、いくつかのGTK +プログラムがメモリリークを起こすことがわかりました。これらのリークを修正することはどれほど重要ですか?多くの場合、これらのプログラムは非常にうまく機能しますが、一方で、漏れているコードの一部を他のプログラムにコピーしたいかどうかはわかりません。そして、GTK +-プログラムのアイデアが高速に動作することであるかどうかはわかりません。したがって、リークがあります。 したがって、オープンソースプログラムでメモリリークを見つけることがある場合、それを修正する必要がありますか、たとえば効率性の問題があるので、プログラマの元のアイデアは小さなリークコードを書くことでしたか?
19 c  memory 

5
複数のCPU /コアが同じRAMに同時にアクセスできますか?
これは私が推測するものです: 2つのコアがRAM内の同じアドレスにアクセスしようとした場合、一方が他方にアクセスするのを待つ必要があります。二、彼らはそれぞれアクセスすることができましたように、各コアが同じアドレスにアクセスしようとしている時間は、彼らはまだ、そのRAMがキャッシュされていて、同時にキャッシュを。 2つのコアが同じRAMの異なるアドレスにアクセスしようとすると、一方が他方にアクセスするのを待たなければなりません。 言い換えれば、RAMを集中的に使用するプログラミングタスクでは、コアごとに複数回RAMの同じアドレスから読み取る必要がなければ、マルチプロセッシングはあまり役に立たないと思います。 だから、複数のCPU /コアが同じRAMに同時にアクセスできますか、または私が言っていることは正しいですか?

6
24ビットの用語
24ビット(3バイト)整数の用語はありますか? 私は(のような珍しいビット数を知っている「ニブル」または「ニブル」例えば、非常に一般的で、4ビットのために)名前を持ち、ビデオとオーディオ技術の両方で、24ビットを有します。

3
オブジェクトを作成すると、インスタンスフィールドとメソッドの両方、またはインスタンスフィールドのみに新しいメモリが割り当てられます
次のクラスがあります class Student{ int rollNumber; int marks; public void setResult(int rollNumber, int marks){ this.rollNumber=rollNumber; this.marks=marks; } public void displayResult(){ System.out.println("Roll Number= "+this.rollNumber+" Marks= "+this.marks); } } 次に、次のようにStudentタイプの2つのオブジェクトを作成します Student s1=new Student(); Student s2=new Student(); これで、2つの異なるメモリセットがインスタンスフィールドに割り当てられます。今私の質問は、メモリがメソッドに割り当てられているかどうかです(setResultそしてdisplayResult)に2回または1回です。 次の図を参照してください。どの図が正しい情報を提供しているかを教えてください。

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