問題タブ [memory-management]
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.
c# - リストボックスの WPF のイメージを破棄 (メモリ リーク)
たくさんの画像が入った ListBox があります (datatemplate を使用して行います)。画像は、アイテム ソースを設定することによって作成されます。
その後、リストボックスの Items.Clear() メソッドを使用してクリアされます。リストボックスの Items.Add メソッドを使用して、新しい画像を追加します。
ただし、メモリ使用量はどんどん増えていきます。表示されるのは同じ 300 ほどの小さな画像ですが、メモリが解放されることはないようです。アプリは約 40 メグを使用し始め、すぐに 700 メグまで上昇します。これらすべてのイメージが使用しているメモリを解放するにはどうすればよいですか?
編集:私が言及するのを忘れたことの1つは、画像(サイズはそれぞれ約4〜5k)がネットワーク経由でロードされていることです。キャッシングはこれに何らかの責任がありますか?12 個の画像を表示すると、約 10 メガバイトのメモリが消費されます。これはファイルサイズの約 100 倍です。
c++ - データ メンバーは、C++ のオブジェクトと同じメモリ空間に割り当てられていますか?
次のようなクラスがあるとします。
そして、私はそれを次のようにインスタンス化します:
x はスタックにありますか、それともヒープにありますか? sはどうですか?
memory - Erlang が大きなシーケンスでクラッシュするのはなぜですか?
Erlang の学習を始めたばかりで、プロジェクト オイラーの問題をいくつか試しています。ただし、erlang シェルをクラッシュさせることなく、大きなシーケンスに対して任意の操作を実行できるようです。
つまり、これでも:
次のエラーで erlang がクラッシュします。
eheap_alloc: 467078560 バイトのメモリ (タイプ「ヒープ」) を割り当てることができません。
実際のバイト数はもちろん異なります。
現在、半分のギグは大量のメモリですが、4 ギガの RAM と仮想メモリ用の十分なスペースを備えたシステムで処理できるはずです。
erlang により多くのメモリを使用させる方法はありますか?
objective-c - Cocoa で autorelease を使用するコストはいくらですか?
Apples のドキュメントのほとんどは、特に GUI ビューを作成するときに、自動解放されたオブジェクトの使用を避けているようですが、自動解放されたオブジェクトを使用するコストを知りたいですか?
最終的に、すべてが自動解放され、retain/release の使用が特定のケースのルールの例外となる戦略を使用する必要がありますか? または、 [NSString stringWithEtc...] のような便利なメソッドから返されたオブジェクトの例外である autorelease を使用して、一般的に保持/解放を使用する必要がありますか?
c - Cで変数に使用されたメモリを解放する方法は?
C で変数 (長い文字列など) に使用したメモリを解放するにはどうすればよいですか?
linux - アドレスのVMマッピングを効率的に確認するにはどうすればよいですか?
JITの出力を処理する必要があるトレースツールを作成しているので、スタックがかなり奇妙に見えることがあります。いくつかのヒューリスティックをアドレスに適用して、それらがコード、データ、またはガベージであるかどうかを判断してみたいと思います。(私が時々間違っている場合、それは大したことではありませんが、プロセスがクラッシュした場合、それほど多くはありません。)
cat /proc/«pid»/maps
LinuxのプロセスのVMマッピングのリストを取得できます。そのファイルを解析せずに、プロセス内からこの情報(または任意のサブセット)にアクセスすることは可能ですか?rwx
アドレスのビットを調べるのが理想的です。基本的に、の「読み取り」バージョンが必要ですmprotect(2)
。
これができない場合、特定のアドレスへのアクセスがセグメンテーション違反を引き起こすかどうかを判断するのはどうですか?(この場合、すでにSIGSEGV
ハンドラーがインストールされているので、簡単に上書きすることはできません。または、それを実行するだけです。)
c++ - プログラムでC++配列のサイズを決定しますか?
この質問は、同様の質問に触発されました: delete[] はオペランド配列のサイズをどのように「認識」しますか?
私の質問は少し異なります: プログラムで C++ 配列のサイズを決定する方法はありますか? そうでない場合、なぜですか? 配列を取るすべての関数は、サイズを指定するために整数パラメーターも必要とします。しかし、リンクされた質問が指摘したように、delete[]
割り当てを解除するメモリのサイズを知っている必要があります。
次の C++ コードを検討してください。
これSize of arr: 4
は、ポインターのサイズである " " を出力します。256 を出力する関数があればいいのですが、C++ には存在しないと思います。(繰り返しますが、問題の一部は、なぜそれが存在しないのかということです。)
明確化int arr[256];
: ヒープ (つまり " ") ではなくスタックで配列を宣言すると、sizeof
演算子は 1024 (配列の長さ * sizeof(int)) を返すことを知っています。
c# - 構造体で「new」を使用すると、ヒープまたはスタックに割り当てられますか?
演算子を使用してクラスのインスタンスを作成するとnew
、メモリがヒープに割り当てられます。演算子を使用して構造体のインスタンスを作成するとnew
、ヒープまたはスタックのどこにメモリが割り当てられますか?
c++ - C++ でオブジェクトを返す
クラスからオブジェクトを返すとき、いつメモリを解放するのが適切ですか?
例、
Animal Lister のインスタンスを作成し、そこから Animal 参照を取得した場合、どこで削除すればよいですか?
ここでの問題は、AnimalLister には、作成された動物のリストを追跡する方法がないため、そのようなコードのロジックを変更して、作成されたオブジェクトを削除する方法があることです。
c++ - void ポインタの配列に割り当てられたメモリを解放する
void ポインターの配列を宣言しています。それぞれが任意の型の値を指します。
void **values; // Array of void pointers to each value of arbitary type
次のように値を初期化します。
値に割り当てられたメモリ (void ポインタの配列) を解放/削除するにはどうすればよいですか?