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

可能であれば、公平でリクエスター間のスターベーションがないプログラム要求に応答するために、物理メモリーの一部を動的に割り当てて解放するプロセス。

8
brk()システムコールは何をしますか?
Linuxプログラマのマニュアルによると: brk()およびsbrk()は、プロセスのデータセグメントの終わりを定義するプログラムブレークの場所を変更します。 ここでデータセグメントはどういう意味ですか?それは単なるデータセグメントですか、それともデータ、BSS、およびヒープの組み合わせですか? wikiによると: データ、BSS、およびヒープ領域は、まとめて「データセグメント」と呼ばれることがあります。 データセグメントのみのサイズを変更する理由はわかりません。それがデータ、BSS、およびヒープの場合は、ヒープがより多くのスペースを取得するため、理にかなっています。 それでは、2つ目の質問をさせていただきます。これまでに読んだすべての記事で、著者はヒープが上向きに成長し、スタックが下向きに成長すると言っています。しかし、彼らが説明していないのは、ヒープがスタックとスタックの間のすべてのスペースを占有するときに何が起こるかです。
184 c  linux  unix  memory-management  brk 

9
Pythonのメモリリーク[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 昨年休業。 この質問を改善する 実行時間の長いスクリプトを使用しています。十分に長く実行すると、システムのメモリがすべて消費されます。 スクリプトの詳細には触れませんが、2つの質問があります。 リークの発生を防ぐのに役立つ「ベストプラクティス」はありますか? Pythonでメモリリークをデバッグするにはどのようなテクニックがありますか?

16
カスタムC ++アロケーターの説得力のある例?
std::allocatorカスタムソリューションを採用する理由は何ですか?正確性、パフォーマンス、スケーラビリティなどのために絶対に必要な状況に遭遇しましたか?本当に賢い例はありますか? カスタムアロケーターは、常に標準ライブラリの機能であり、あまり必要がありませんでした。ここのSOの誰かが彼らの存在を正当化するための説得力のある例を提供できるかどうか疑問に思っていました。

8
C ++の新しい演算子でメモリを初期化する方法は?
私はC ++を始めたばかりで、いくつかの良い習慣を身につけたいと思っています。私はちょうど型の配列を割り当てられている場合intとnewオペレータ、どのように私はそれらをすべて自分自身をループせずに0にそれらのすべてを初期化することができますか?私は使うべきmemsetですか?それを行う「C ++」の方法はありますか?

9
ブロックで「自己」のサイクルを保持
この質問はかなり基本的なものだと思いますが、ブロックに入っている多くのObjective-Cプログラマーに関係があると思います。 私が聞いたことは、ブロックはそれらとして参照されるローカル変数をconstコピーとしてキャプチャselfするため、ブロック内で使用すると、そのブロックがコピーされた場合に保持サイクルが発生する可能性があるということです。したがって、__blockブロックをselfコピーするのではなく、ブロックを強制的に直接処理するために使用することになっています。 __block typeof(self) bself = self; [someObject messageWithBlock:^{ [bself doSomething]; }]; ただの代わりに [someObject messageWithBlock:^{ [self doSomething]; }]; 私が知りたいのは次のとおりです。これがtrueの場合、醜さを回避できる方法はありますか(GCの使用は別として)?

11
サブクラスへのポインターでの削除は、基本クラスのデストラクターを呼び出しますか?
私は、class Aそのフィールドの1つにヒープメモリ割り当てを使用しています。クラスAはインスタンス化され、別のクラス(class B。 クラスBのオブジェクトが完了したら、を呼び出しますdelete。これは、デストラクターを呼び出すと想定しています...しかし、これはクラスAのデストラクターも呼び出しますか? 編集: 答えから、私はそれを採用します(間違っている場合は編集してください): delete BのインスタンスがB ::〜B();を呼び出す 呼び出す A::~A(); A::~A deleteAオブジェクトのヒープに割り当てられたすべてのメンバー変数を明示的に指定する必要があります。 場合-最後のメモリブロックの記憶は、クラスBのインスタンスがヒープに返される前記新しいは、それが最初にすべてのデストラクタがオブジェクトを完成させるために呼び出された今後、それを初期化するコンストラクタを呼び出し、次に、ヒープ上のメモリのブロックを割り当てられ、使用されましたオブジェクトが常駐していたブロックがヒープに返されます。

20
Linuxの単一プロセスのCPU使用量とメモリ使用量を取得しますか?
Linuxで単一プロセスのCPUとメモリの使用量を取得したいのですが、PIDはわかっています。うまくいけば、毎秒それを取得し、「watch」コマンドを使用してCSVに書き込むことができます。Linuxコマンドラインからこの情報を取得するには、どのコマンドを使用できますか?



13
「コンパイル時に割り当てられるメモリ」とはどういう意味ですか?
CやC ++などのプログラミング言語では、多くの場合、静的および動的なメモリ割り当てを参照します。概念は理解していますが、「コンパイル時にすべてのメモリが割り当てられた(予約された)」というフレーズは常に混乱します。 コンパイルは、私が理解しているように、高レベルのC / C ++コードを機械語に変換し、実行可能ファイルを出力します。コンパイルされたファイルでメモリはどのように「割り当て」られますか?メモリは常にすべての仮想メモリ管理機能を備えたRAMに割り当てられているのではないですか? 定義によるメモリ割り当ては、ランタイムコンセプトではありませんか? C / C ++コードで1KBの静的に割り当てられた変数を作成すると、実行可能ファイルのサイズが同じだけ増加しますか? これは、「静的割り当て」という見出しの下でフレーズが使用されているページの1つです。 基本に戻る:メモリー割り当て、歴史の歩み

9
私の変数はメモリのどこにCに保存されますか?
メモリがデータ、ヒープ、スタック、コードの4つのセグメントに分割されていることを考慮して、グローバル変数、静的変数、定数データ型、ローカル変数(関数で定義および宣言)、変数(メイン関数内)、ポインター、および動的に割り当てられたスペース(mallocおよびcallocを使用)はメモリに格納されますか? 次のように割り当てられると思います。 グローバル変数------->データ 静的変数------->データ 定数データ型----->コード ローカル変数(関数で宣言および定義)--------> stack メイン関数で宣言および定義された変数----->ヒープ ポインタ(例えばchar *arr、int *arr)------->ヒープ 動的に割り当てられたスペース(mallocおよびcallocを使用)-------->スタック これらの変数は、Cの観点からのみ参照しています。 私はCを初めて使用するので、間違っている場合は修正してください。

3
2つの同じリストのメモリフットプリントが異なるのはなぜですか?
私は2つのリストl1とを作成しましたl2が、それぞれに異なる作成方法を使用しています。 import sys l1 = [None] * 10 l2 = [None for _ in range(10)] print('Size of l1 =', sys.getsizeof(l1)) print('Size of l2 =', sys.getsizeof(l2)) しかし、出力は私を驚かせました: Size of l1 = 144 Size of l2 = 192 リスト内包表記で作成されたリストはメモリ内でサイズが大きくなりますが、それ以外の2つのリストはPythonでは同じです。 何故ですか?これはCPythonの内部的なものですか、それとも他の説明ですか?

7
なぜivarを使うのですか?
私は通常、この質問が別の方法で尋ねられるのを見ます。たとえば、すべてのivarはプロパティである必要がありますか?(そして私はこのQに対するbbumの答えが好きです)。 私はコードでほとんど排他的にプロパティを使用しています。ただし、iOSで長い間開発を続けており、伝統的なゲームプログラマーである請負業者と一緒に仕事をすることがよくあります。ほとんど何もプロパティを宣言せず、ivarsに依存するコードを書いています。私は彼がこれを行うのは、1。)プロパティがObjective C 2.0(2007年10月)まで常に存在しなかったために慣れていることと、2。)ゲッター/セッターを通過しないことによる最小限のパフォーマンスの向上のためです。 彼はリークしないコードを書いていますが、私は彼にivarよりもプロパティを使用することを好みます。私達はそれについて話しました、そして彼は多かれ少なかれKVOを使っていなかったのでプロパティを使う理由がないと見ています、そして彼はメモリ問題の世話をした経験があります。 私の質問はもっと...なぜあなたはこれまでにivar期間を使いたいと思うでしょう-経験の有無にかかわらず。ivarの使用が正当化されるパフォーマンスの大きな違いは本当にありますか? また、明確にするために、必要に応じてセッターとゲッターをオーバーライドし、ゲッター/セッター内のそのプロパティと相関するivarを使用します。ただし、getter / setterまたはinit以外では、常にself.myProperty構文を使用します。 編集1 良い反応をありがとうございました。正しくないように思われる問題に対処したいのは、ivarを使用するとカプセル化が発生し、プロパティを使用しない場合です。クラスの継続でプロパティを定義するだけです。これにより、外部からプロパティが非表示になります。プロパティをインターフェースでreadonlyと宣言し、実装でreadwriteとして再定義することもできます: // readonly for outsiders @property (nonatomic, copy, readonly) NSString * name; そしてクラスの継続に持っています: // readwrite within this file @property (nonatomic, copy) NSString * name; 完全に「プライベート」にするには、クラスの継続で宣言するだけです。

10
iOSアプリの最大メモリ量
私は少なくとも3gsをターゲットにしているiOSゲームに取り組んでいます。Retinaディスプレイデバイス(iphone 4、ipod touch第4世代)にHDアセットを使用しています。 メモリに関しては、Ipod Touch 4世代は3gsと同じ量のRAM(Iphone 4の512と比較して256)を持っているため、私たちにとって最も制約のあるデバイスのようですが、HDアセットを使用しています。以前は100〜110 MBのRAMを読み込もうとしたときにアプリがクラッシュしていましたが、70 MBに下がったため、読み込みがクラッシュすることはありませんでした。 多くの検索を行った後、公式のハードリミットはないようです。安全のために使用するメモリバジェットを知るにはどうすればよいでしょうか。私たちはアーティストに、各マップについてメモリの心配なしに使用できる予算を与えることができるようにしたいと考えています。

15
.NETでメモリリークを見つけるのに役立つ戦略とツールは何ですか。
私はC ++を10年間書きました。メモリの問題が発生しましたが、かなりの労力で修正できました。 ここ数年、私はC#を書いてきました。まだ多くのメモリの問題が発生しています。非決定性のため、診断と修正は困難です。C#の哲学は、確実にそうする場合にはそのようなことを心配する必要がないということです。 私が見つけた特定の問題の1つは、コード内のすべてを明示的に破棄してクリーンアップする必要があることです。私がそうしないと、メモリプロファイラーは本当に役に立ちません。なぜなら、あなたの周りに非常に多くのチャフが浮かんでいるため、表示しようとしているすべてのデータ内にリークを見つけることができないからです。私は間違った考えを持っているのか、あるいは私が持っているツールが最高ではないのかと思います。 .NETのメモリリークに対処するには、どのような戦略とツールが役立ちますか?

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