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

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

27
スタックとヒープはどこにありますか?
プログラミング言語の本では、これらの2つが何であるかを説明することなく、値型はスタック上に作成され、参照型はヒープ上に作成されると説明されています。私はこれの明確な説明を読んでいません。私は何を理解していますスタックとはですか。だが、 それらはどこにありますか(物理的には実際のコンピュータのメモリ内)? それらは、OSまたは言語ランタイムによってどの程度制御されていますか? それらの範囲は何ですか? それぞれのサイズを決定するものは何ですか? 何が速くなるのですか?

20
ローカル変数のメモリにスコープ外でアクセスできますか?
次のコードがあります。 #include <iostream> int * foo() { int a = 5; return &a; } int main() { int* p = foo(); std::cout << *p; *p = 8; std::cout << *p; } そして、コードは実行時例外なしで実行されています! 出力は 58 それはどのようになりますか?ローカル変数のメモリは、その関数の外ではアクセスできませんか?


18
C ++プログラマーが「新規」の使用を最小限に抑える必要があるのはなぜですか?
私がつまずいスタックオーバーフロー質問のstd ::リストを使用しているときのstd ::文字列を使用してメモリリーク<はstd :: string>に、そしてコメントの一つは、この言います: 使用を中止newそんなに。どこで新しいものを使ったのか、私にはわかりません。C ++では値によってオブジェクトを作成できます。これは、この言語を使用することの大きな利点の1つです。 すべてをヒープに割り当てる必要はありません。Javaプログラマーの ように考えるのをやめます。 それが何を意味するのかよくわかりません。 C ++でオブジェクトをできるだけ頻繁に値で作成する必要があるのはなぜですか。また、内部的にどのような違いがありますか? 答えを誤解しましたか?


2
正確に8192要素をループするとプログラムが遅くなるのはなぜですか?
これは問題のプログラムからの抜粋です。行列img[][]のサイズはSIZE×SIZEで、次のように初期化されます。 img[j][i] = 2 * j + i 次に、マトリックスを作成res[][]します。ここの各フィールドは、imgマトリックス内のその周囲の9つのフィールドの平均になります。簡単にするため、境界線は0のままにしておきます。 for(i=1;i<SIZE-1;i++) for(j=1;j<SIZE-1;j++) { res[j][i]=0; for(k=-1;k<2;k++) for(l=-1;l<2;l++) res[j][i] += img[j+l][i+k]; res[j][i] /= 9; } これでプログラムは終わりです。完全を期すために、これが以前のものです。後にコードはありません。ご覧のとおり、それは初期化です。 #define SIZE 8192 float img[SIZE][SIZE]; // input image float res[SIZE][SIZE]; //result of mean filter int i,j,k,l; for(i=0;i<SIZE;i++) for(j=0;j<SIZE;j++) img[j][i] = (2*j+i)%8196; 基本的に、このプログラムはSIZEが2048の倍数である場合、実行時間が長くなります。 SIZE = 8191: 3.44 secs …

13
Pythonでオブジェクトのサイズを確認するにはどうすればよいですか?
Pythonで文字列や整数などのオブジェクトのサイズを取得する方法を知りたいです。 関連質問:Pythonリスト(タプル)には要素ごとに何バイトありますか? 値のサイズを指定するサイズフィールドを含むXMLファイルを使用しています。このXMLを解析してコーディングを行う必要があります。特定のフィールドの値を変更する場合は、その値のサイズフィールドを確認します。ここで、入力するゴングの新しい値がXMLと同じサイズかどうかを比較します。新しい値のサイズを確認する必要があります。紐の場合はその長さと言えます。しかし、int、floatなどの場合、私は混乱しています。

8
どのPythonメモリプロファイラーが推奨されますか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか? Stack Overflowのトピックとなるように質問を更新します。 6年前休業。 私のPythonアプリケーションのメモリ使用量を知りたいので、具体的には、どのコードブロック/部分またはオブジェクトがほとんどのメモリを消費しているのか知りたいです。Google検索では、商用のものがPython Memory Validator(Windowsのみ)であることを示しています。 そしてオープンソースのものはPySizerとHeapyです。 私は誰も試したことがないので、どれを検討するのが最善かを知りたいと思いました。 ほとんどの詳細を示します。 コードに変更を加える必要はありません。

4
プライベートバイト、仮想バイト、ワーキングセットとは何ですか?
perfmon windowsユーティリティを使用して、プロセスのメモリリークをデバッグしようとしています。 これは、perfmonが用語を説明する方法です。 ワーキングセットは、このプロセスのワーキングセットの現在のサイズ(バイト単位)です。ワーキングセットは、プロセス内のスレッドによって最近アクセスされたメモリページのセットです。コンピュータの空きメモリがしきい値を超えている場合、ページは使用されていなくてもプロセスのワーキングセットに残ります。空きメモリがしきい値を下回ると、ページはワーキングセットから削除されます。それらが必要な場合、メインメモリを離れる前に、ワーキングセットにソフトフォールトされます。 仮想バイトは、プロセスが使用している仮想アドレス空間の現在のサイズ(バイト単位)です。仮想アドレス空間の使用は、ディスクまたはメインメモリページの対応する使用を必ずしも意味しません。仮想空間は有限であり、プロセスはライブラリをロードする能力を制限する可能性があります。 Private Bytesは、このプロセスが割り当てた、他のプロセスと共有できないメモリの現在のサイズ(バイト単位)です。 これらは私が持っている質問です: 共有ライブラリが関与していないためプロセスにリークがあるかどうかを確認するために測定する必要があるのはプライベートバイトですか?リークが発生した場合、プロセス自体から発生しますか? プロセスによって消費されるメモリの合計はどれくらいですか?それは仮想バイトですか、それとも仮想バイトとワーキングセットの合計ですか? プライベートバイト、ワーキングセット、仮想バイトの間に何か関係がありますか? メモリ使用量をよりよく把握できる他のツールはありますか?

27
Rセッションで利用可能なメモリを管理するためのトリック
対話型Rセッションの使用可能なメモリを管理するために、どのようなトリックを使用しますか?以下の関数(2004年のPetr PikalとDavid Hindsによるr-helpリストへの投稿に基づく)を使用して、最大のオブジェクトをリスト(および/またはソート)し、場合rm()によってはそれらのいくつかをリストします。しかし、これまでで最も効果的な解決策は、十分なメモリを備えた64ビットLinuxで実行することでした。 他の人が共有したい素敵なトリックはありますか?投稿ごとに1つお願いします。 # improved list of objects .ls.objects <- function (pos = 1, pattern, order.by, decreasing=FALSE, head=FALSE, n=5) { napply <- function(names, fn) sapply(names, function(x) fn(get(x, pos = pos))) names <- ls(pos = pos, pattern = pattern) obj.class <- napply(names, function(x) as.character(class(x))[1]) obj.mode <- napply(names, mode) obj.type <- …

19
どのような場合にmallocやnewを使用しますか?
私はC ++でデータを割り当てたり解放したりする方法が複数あることを理解しています。呼び出すmallocときは呼び出す必要がfreeあり、new演算子を使用するときはペアにする必要がdeleteあり、2つを組み合わせるのは誤りです(たとえば、free()作成されたものの呼び出し)newオペレータ)が、私は私が使用する必要があるときにクリアしていないよmalloc/ free私が使用する必要があるときにnew/ delete私の本当の世界のプログラムで。 C ++のエキスパートの場合は、この点に関して従う経験則や慣例を教えてください。

17
標準ライブラリのみを使用して整列メモリを割り当てる方法は?
就職の面接の一環としてテストを終えたばかりで、Googleを参考にしても、1つの質問で困惑しました。StackOverflowの乗組員がそれで何ができるかを見たいのですが。 このmemset_16aligned関数には、16バイト境界で整列されたポインターを渡す必要があります。そうしないと、クラッシュします。 a)どのようにして1024バイトのメモリを割り当て、それを16バイト境界に揃えますか? b)のmemset_16aligned実行後にメモリを解放します。 { void *mem; void *ptr; // answer a) here memset_16aligned(ptr, 0, 1024); // answer b) here }


9
Pythonでメモリを明示的に解放するにはどうすればよいですか?
大きな入力ファイルを操作して三角形を表す数百万のオブジェクトを作成するPythonプログラムを作成しました。アルゴリズムは次のとおりです。 入力ファイルを読み込む ファイルを処理し、頂点で表される三角形のリストを作成する 頂点をOFF形式で出力します。頂点のリストの後に三角形のリストが続きます。三角形は頂点のリストへのインデックスで表されます 三角形を出力する前に頂点の完全なリストを出力するというOFFの要件は、出力をファイルに書き込む前に三角形のリストをメモリに保持する必要があることを意味します。その間、リストのサイズが原因でメモリエラーが発生します。 一部のデータが不要になり、解放できることをPythonに伝える最善の方法は何ですか?


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