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

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

7
C ++、フリーストアとヒープ
動的な割り当てはnew/delete上の場所を取ると言われているフリー店舗、一方でmalloc/free操作が使用ヒープを。 実際に実際の違いがあるかどうか知りたいのですが。 コンパイラーは2つの用語を区別しますか?(無料ストアとヒープではなくnew/malloc)


10
C ++でのスタックとヒープの適切な使用法
私はしばらくプログラミングをしてきましたが、ほとんどがJavaとC#でした。実際に自分でメモリを管理する必要はありませんでした。私は最近C ++でプログラミングを始めましたが、いつスタックに格納するか、いつヒープに格納するかについて少し混乱しています。 非常に頻繁にアクセスされる変数はほとんど使用されない変数であるスタックとオブジェクトに格納する必要があり、大きなデータ構造はすべてヒープに格納する必要があると私は理解しています。これは正しいですか、それとも間違っていますか?

22
Android Studio-割り当てられたヒープサイズを増やす方法
私は今3か月間Android Studioを使用していますが、私が開始したアプリの1つはかなり大きくなっています。プログラムの右下に示されているメモリ使用量は、割り当てられたヒープの最大値が494Mであることを示しています。 XMLファイルの変更を開始すると、メモリ使用量がすぐにその上限に達し、IDEは次のようなメモリ不足エラーでクラッシュします。 これを使用してヒープサイズを大きくしようとしましたが、これまでのところ効果はありません。 ヒープサイズを増やす方法に関する数十の記事やその他の質問を確認しましたが、どれもうまくいきません。VMOPTIONSやIDEの設定で何をしても、ヒープサイズは増えません。VMOPTIONSの正しいファイルを編集していると思います。意図的に無効なコマンドを指定すると、Android Studioはそれについて文句を言い、起動しません。 私はWindows 7-64ビットを使用していて、16GBのRAMを持っています。他の誰かがAndroid Studioでこの問題を抱えていましたか?そして、あなたはそれを修正することができましたか?

3
ARCで__autoreleasing所有者修飾子を記述する必要があるのはどのような場合ですか?
パズルを完成させようとしています。 __strongNSObject、NSStringなどのすべてのObjective-C保持可能オブジェクトポインタのデフォルトです。これは強力な参照です。ARC -releaseは、スコープの最後でa とバランスをとります。 __unsafe_unretained古い方法に等しい。保持可能なオブジェクトを保持せずに弱いポインターに使用されます。 __weak以下のようなものです__unsafe_unretained、それはポインタが参照されるオブジェクトが割り当て解除されるとすぐにnilに設定されることをオートゼロ弱参照の意味だことを除いて。これにより、ダングリングポインターやEXC_BAD_ACCESSエラーの危険性がなくなります。 しかし、正確には何が__autoreleasing良いのでしょうか?この修飾子を使用する必要がある場合の実用的な例を見つけるのに苦労しています。私はそれが次のようなポインターポインターを期待する関数とメソッドのためだけであると私は信じています: - (BOOL)save:(NSError**); または NSError *error = nil; [database save:&error]; ARCでは、次のように宣言する必要があります。 - (BOOL)save:(NSError* __autoreleasing *); しかし、これは曖昧すぎるため、その理由を完全に理解したいと思います。私が見つけたコードスニペットは、2つの星の間に__autoreleasingを配置しています。タイプはNSError**(NSErrorへのポインターポインター)なので、__autoreleasing単純に前ではなく星の間に配置するのはNSError**なぜですか? また、私が頼らなければならない他の状況があるかもしれません__autoreleasing。

1
Javaでの静的割り当て-ヒープ、スタック、永続的な生成
私は最近、Javaでのメモリ割り当てスキームについてたくさん読んでいますが、さまざまなソースから読んでいるので、多くの疑問がありました。私は私の概念を集めました、そして私はすべてのポイントを通過し、それらにコメントすることを要求します。メモリの割り当てはJVM固有であることを知ったので、私の質問はSun固有であると前もって言わなければなりません。 クラス(クラスローダーによってロードされた)は、ヒープ上の特別な領域(Permanent Generation)に配置されます クラスの名前、クラスに関連付けられたオブジェクト配列、JVMが使用する内部オブジェクト(java / lang / Objectなど)、および最適化情報などのクラスに関連するすべての情報は、Permanent Generation領域に入ります。 すべての静的メンバー変数は、Permanent Generation領域に再び保持されます。 オブジェクトは別のヒープに移動します:若い世代 クラスごとに各メソッドのコピーが1つだけあり、メソッドは静的または非静的です。そのコピーは、Permanent Generation領域に配置されます。非静的メソッドの場合、すべてのパラメーターとローカル変数がスタックに格納されます。そのメソッドが具体的に呼び出されると、それに関連付けられた新しいスタックフレームが取得されます。静的メソッドのローカル変数がどこに保存されているのかわかりません。彼らは永久世代の山にいますか?または、それらの参照のみが永続生成領域に格納され、実際のコピーは別の場所にあります(どこに?) また、メソッドの戻り値の型がどこに格納されるのかわかりません。 (若い世代の)オブジェクトが(永続的な世代の)静的メンバーを使用する必要がある場合、それらには静的メンバーへの参照が与えられます。また、メソッドの戻り値の型などを格納するのに十分なメモリ領域が与えられます。 ご覧いただきありがとうございます!

6
iOS5の強力なストレージと弱いストレージの説明
私はiOS5開発が初めてで、objective-cを使用しています。強力なストレージと弱いストレージの違いを理解できません。ドキュメントと他のSOの質問を読みましたが、それらはすべて私と同じように聞こえ、それ以上の洞察はありません。 私はドキュメントを読みます:ARCへの移行 -iOS4の保持、割り当て、およびリリースの用語を参照しています。これは私を混乱させます。次に、Open U CS193pを調べます。OpenとCS193pは、強弱を区別します。 強:「これ以上指さないようになるまでヒープ内に保持する」 弱:「他の誰かが強く指さしている限り、これを保持する」 2つの定義は同じではありませんか?ポインターがオブジェクトを指していない場合、オブジェクトを保持しているメモリを解放しますか?ポインタ、ヒープ、メモリの割り当てまたは割り当て解除の概念を理解していますが、強いと弱いの違いは何ですか?

11
スマートポインター:オブジェクトの所有者は誰ですか?[閉まっている]
ここで何が尋ねられているのかを知るのは難しい。この質問は、あいまいで、あいまいで、不完全で、過度に広い、または修辞的であり、現在の形では合理的に回答することができません。再開できるようにこの質問を明確にするヘルプについては、ヘルプセンターに アクセスしてください。 8年前に閉鎖。 C ++はすべてメモリの所有権、つまり所有権のセマンティクスです。 動的に割り当てられたメモリのチャンクの所有者は、そのメモリを解放する必要があります。したがって、問題は実際には誰がメモリを所有するかになります。 C ++での所有権は、生のポインターが内部にラップされるタイプによって文書化されているため、優れた(IMO)C ++プログラムでは、生のポインターが渡されるのを確認することは非常にまれです(まれではありません)(生のポインターには推論された所有権がないため、誰がメモリの所有者であるかを知らないため、ドキュメントを注意深く読まなければ、誰が所有者であるかはわかりません) 逆に、クラスに生のポインタが格納されていることはまれです。各生のポインタは、独自のスマートポインタラッパー内に格納されます。(注:オブジェクトを所有していない場合は、オブジェクトがスコープ外になり、破棄されるタイミングがわからないため、オブジェクトを格納しないでください。) だから質問: 人々が遭遇した所有権のセマンティクスのタイプは何ですか? これらのセマンティクスを実装するために使用される標準クラスは何ですか? どのような場合に役立ちますか? 回答ごとに1種類のセマンティック所有権を保持し、個別に投票できるようにします。 概要: 概念的には、スマートポインターは単純で、単純な実装は簡単です。私は多くの試みられた実装を見てきましたが、それらは常に何らかの方法で壊れており、何気ない使用や例には明らかではありません。したがって、自分でロールするのではなく、ライブラリから十分にテストされたスマートポインタを常に使用することをお勧めします。std::auto_ptrまたは、Boostスマートポインターの1つが私のニーズをすべてカバーしているようです。 std::auto_ptr<T>: 一人がオブジェクトを所有しています。所有権の譲渡が許可されています。 使用法:これにより、所有権の明示的な移転を示すインターフェースを定義できます。 boost::scoped_ptr<T> 一人がオブジェクトを所有しています。所有権の譲渡は許可されていません。 使用法:明示的な所有権を示すために使用されます。オブジェクトは、デストラクタによって、または明示的にリセットされたときに破棄されます。 boost::shared_ptr<T>(std::tr1::shared_ptr<T>) 複数の所有権。これは単純な参照カウントポインターです。参照カウントがゼロに達すると、オブジェクトは破棄されます。 使用法:オブジェクトが、コンパイル時に決定できない存続期間を持つ複数の所有者を持つことができる場合。 boost::weak_ptr<T>: shared_ptr<T>ポインタのサイクルが発生する可能性がある状況で使用されます。 使用法:サイクルのみが共有参照カウントを維持しているときに、サイクルがオブジェクトを保持しないようにするために使用されます。

6
作成した変数や関数などをインタプリタのメモリから削除する方法はありますか?
私はこの質問に対する正確な答えを数日間探し続けてきましたが、良いことは何もありません。私はプログラミングの完全な初心者ではありませんが、中級レベルではまだです。 Pythonのシェルにいるときは、次のように入力dir()します。現在のスコープ(メインブロック)にあるすべてのオブジェクトのすべての名前が表示されますが、そのうちの6つがあります。 ['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__'] 次に、たとえば変数を宣言すると、x = 10組み込みモジュールの下のオブジェクトのリストに自動的に追加され、もう一度dir()入力dir()すると、次のように表示されます。 ['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'x'] 関数、クラスなどについても同様です。 最初に利用可能な標準6を消去せずに、これらの新しいオブジェクトをすべて削除するにはどうすればよいですか? コマンドプロンプトウィンドウからすべてのテキストを消去する「メモリクリーニング」、「コンソールのクリーニング」についてここで読みました。 >>> import sys >>> clear = lambda: os.system('cls') >>> clear() しかし、これはすべて、私が達成しようとしていることとは何の関係もありません。使用されているオブジェクトをすべて削除するわけではありません。

10
ptrがNULLであるfree(ptr)はメモリを破壊しますか?
理論的には free(ptr); free(ptr); すでに解放されているメモリを解放しているため、メモリ破損です。 しかし、もし free(ptr); ptr=NULL; free(ptr); OSは未定義の方法で動作するので、何が起こっているのかについてこれに関する実際の理論的分析を得ることができません。私が何をしていても、このメモリ破損はありますか? NULLポインタの解放は有効ですか?

3
ポップオーバーがまだ表示されているときにUIPopovercontroller deallocに達した
私は私の質問に対してSOで回答を探しましたが、どれも役に立たなかったことを保証します。ここで私はUIImagePickerController内に提示する必要がある単純なコードを取得しましたUIPopoverController: -(void)takePicture:(id)sender{ UIImagePickerController *picker=[[UIImagePickerController alloc] init]; picker.delegate=self; picker.sourceType=UIImagePickerControllerSourceTypeCamera; picker.allowsEditing=YES; UIPopoverController *poc=[[UIPopoverController alloc] initWithContentViewController:picker]; [poc presentPopoverFromBarButtonItem:bbItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:NO]; } さて、私が最初に[UIPopoveController dealloc]到達したときからさえ...エラーとプログラムがクラッシュします。ARCによる保持、解放、自動解放は行っていません。UIPopoverControllersARCを利用する際に特別な考慮事項はありますか?

4
揮発性は高価ですか?
揮発性の実装、特にセクション「アトミック命令との相互作用」について、コンパイラライター向けのJSR-133クックブックを読んだ後、更新せずに揮発性変数を読み取るには、LoadLoadまたはLoadStoreバリアが必要だと思います。ページのさらに下を見ると、LoadLoadとLoadStoreは、X86 CPUでは実質的に何もしません。これは、x86で明示的なキャッシュ無効化なしで揮発性読み取り操作を実行でき、通常の変数読み取りと同じくらい高速であることを意味しますか(揮発性の並べ替えの制約を無視)。 私はこれを正しく理解していないと思います。誰かが私を啓蒙したいと思いませんか? 編集:マルチプロセッサ環境に違いがあるのでしょうか。ジョンVが述べているように、シングルCPUシステムでは、CPUはそれ自体のスレッドキャッシュを調べる可能性がありますが、マルチCPUシステムでは、CPUにいくつかの構成オプションが必要です。マルチCPUシステムで、そうですか? PS:これについて詳しく知る途中で、次のすばらしい記事に出くわしました。この質問は他の人にとって興味深いかもしれないので、ここでリンクを共有します。 Javaの理論と実践:Javaメモリモデルの修正、パート1と Javaの理論と実践:Javaメモリー・モデルの修正、パート2



11
Androidで現在のメモリ使用量を取得するにはどうすればよいですか?
/ proc / meminfoを使用してコマンド応答を解析しましたが、結果は次のことを示しています: MemTotal:94348 kB MemFree:5784 kB 手段。5MBの空きメモリしかないことを示しています。Androidモバイルで可能ですか?私の携帯にインストールされているアプリケーションは5〜6しかなく、他のタスクは実行されていません。それでも、このコマンドは空きメモリがほとんどないことを示しています。 誰かがこれを明確にできますか?またはアンドロイドでメモリ使用量を取得する他の方法はありますか?

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