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

このタグは、メモリ管理やプログラミングの問題に使用します。一般的なソフトウェアのメモリハードウェアの問題またはエラーに関する質問については、https://superuser.com、またはこれがエンタープライズレベルのハードウェアまたはソフトウェアに関連している場合はhttps://serverfault.comにアクセスしてください。

21
nullポインタにアドレス0が使用されるのはなぜですか?
C(またはそのことについてはC ++)では、値がゼロの場合、ポインターは特別です。メモリーを解放した後、ポインターをゼロに設定することをお勧めします。mallocを呼び出すと、メモリを取得できない場合は値0のポインタが返されます。私はif (p != 0)常に、渡されたポインタが有効であることなどを確認するために使用しています。 しかし、メモリアドレス指定は0から始まるので、0は他のアドレスと同じように有効なアドレスではありませんか?その場合、nullポインターの処理に0をどのように使用できますか?代わりに負の数がnullにならないのはなぜですか? 編集: 良い答えがたくさん。私の心がそれを解釈しているように表現された答えで言われたことを要約し、私が誤解した場合、コミュニティが私を修正してくれることを願っています。 プログラミングの他のすべてのように、それは抽象化です。単なる定数であり、実際にはアドレス0に関連していません。C++ 0xは、キーワードを追加することでこれを強調していnullptrます。 これはアドレスの抽象化でもありません。C標準で指定されている定数であり、コンパイラが「実際の」アドレスと決して等しくないことを確認する限り、他の数値に変換できます。0がプラットフォームに使用するのに最適な値。 初期の場合のように抽象化されていない場合、アドレス0はシステムによって使用され、プログラマーの立ち入りを制限します。 私の負の数の提案は少しワイルドなブレーンストーミングだったと私は認めます。アドレスに符号付き整数を使用することは、ヌルポインター(-1など)を除いて、値空間が有効なアドレスを作る正の整数と無駄になる負の数に均等に分割されることを意味する場合、少し無駄です。 いずれかの数値が常にデータ型で表現できる場合、それは0です(おそらく1もそうです。符号なしの場合は0または1になる1ビット整数、または符号付きの場合は単に符号付きビット、または[-2、1]になります。ただし、0がnullで、1がメモリ内の唯一のアクセス可能なバイトであることを確認できます。) それでも未だに未解決な部分があります。スタックオーバーフローの質問特定の固定アドレスへのポインターは、nullポインターの0が抽象化であっても、他のポインター値は必ずしもそうではないことを示しています。これにより、別のスタックオーバーフローの質問を投稿するようになりました。アドレス0にアクセスできますか?。
121 c++  c  memory  pointers 


7
Python構造のメモリ内サイズ
32ビットおよび64ビットプラットフォームでのPythonデータ構造のメモリサイズのリファレンスはありますか? そうでない場合、これはSOで使用すると便利です。完全であるほど良いです!では、次のPython構造で何バイトが使用されているのか(lenおよびコンテンツタイプによって異なります)? int float 参照 str Unicode文字列 tuple list dict set array.array numpy.array deque 新しいスタイルのクラスオブジェクト 古いスタイルのクラスオブジェクト ...そして私が忘れているすべて! (他のオブジェクトへの参照のみを保持するコンテナーの場合、アイテム自体が共有される可能性があるため、アイテム自体のサイズをカウントしたくないことは明らかです。) さらに、実行時にオブジェクトによって使用されるメモリを(再帰的に、または再帰的に)取得する方法はありますか?

9
メモリリークはどこまで行くことができますか?
メモリリークに何度も遭遇しました。通常、私はmalloc明日がないようなとき、またはFILE *汚れた洗濯物のようにぶら下がっているとき。私は通常、少なくともプログラムが終了したときにすべてのメモリがクリーンアップされると想定しています(読む:必死に願っています)。プログラムの終了時やクラッシュ時に、リークされたメモリが収集されない状況はありますか? 答えが言語によって大きく異なる場合は、C(++)に焦点を当てましょう。 「明日がないような」、「汚れた洗濯物のようにぶら下がっている」などの語句の双曲線の使用に注意してください。安全ではない* malloc*あなたが愛する人を傷つける可能性があります。また、汚れた洗濯にはご注意ください。
118 c++  c  memory  memory-leaks 

5
ヒープサイズよりもはるかに多くのメモリを使用しているJava(または正しいサイズのDockerメモリ制限)
私のアプリケーションでは、Javaプロセスで使用されるメモリはヒープサイズよりもはるかに多くなっています。 コンテナーがヒープサイズよりも多くのメモリを使用しているため、コンテナーが実行されているシステムでメモリの問題が発生し始めます。 ヒープサイズは128 MB(-Xmx128m -Xms128m)に設定され、コンテナは最大1 GBのメモリを使用します。通常の状態では、500MB必要です。Dockerコンテナの制限が(たとえばmem_limit=mem_limit=400MB)未満の場合、プロセスはOSのメモリ不足キラーによって強制終了されます。 Javaプロセスがヒープよりもはるかに多くのメモリを使用する理由を説明できますか?Dockerのメモリ制限のサイズを正しく設定するにはどうすればよいですか?Javaプロセスのオフヒープメモリフットプリントを削減する方法はありますか? JVMのネイティブメモリトラッキングからコマンドを使用して、問題に関する詳細を収集します。 ホストシステムから、コンテナーが使用するメモリを取得します。 $ docker stats --no-stream 9afcb62a26c8 CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 9afcb62a26c8 xx-xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.0acbb46bb6fe3ae1b1c99aff3a6073bb7b7ecf85 0.93% 461MiB / 9.744GiB 4.62% 286MB / 7.92MB 157MB / 2.66GB 57 コンテナーの内部から、プロセスが使用するメモリーを取得します。 $ ps -p 71 -o …
118 java  linux  docker  memory  jvm 


8
Python subprocess.Popen「OSError:[Errno 12]メモリを割り当てられません」
注:この質問はもともとここで尋ねられたものですが、許容できる回答が実際には見つからなかったにもかかわらず、賞金の期限が切れました。元の質問で提供されたすべての詳細を含めて、この質問を再質問します。 Pythonスクリプトは、schedモジュールを使用して60秒ごとに一連のクラス関数を実行しています。 # sc is a sched.scheduler instance sc.enter(60, 1, self.doChecks, (sc, False)) スクリプトは、ここのコードを使用してデーモン化されたプロセスとして実行されています。 doChecksの一部として呼び出される多くのクラスメソッドは、サブプロセスモジュールを使用してシステム関数を呼び出し、システム統計を取得します。 ps = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE).communicate()[0] これは、スクリプト全体が次のエラーでクラッシュするまでの期間、正常に実行されます。 File "/home/admin/sd-agent/checks.py", line 436, in getProcesses File "/usr/lib/python2.4/subprocess.py", line 533, in __init__ File "/usr/lib/python2.4/subprocess.py", line 835, in _get_handles OSError: [Errno 12] Cannot allocate memory スクリプトがクラッシュした後のサーバー上のfree -mの出力は次のとおりです。 $ free -m …
114 python  linux  memory 

6
MySQLの最大メモリ使用量
MySQLがLinuxサーバーで使用するメモリの量に上限を設定する方法を教えてください。 現在、MySQLは新しいクエリが要求されるたびにメモリを消費し続けるため、最終的にメモリが不足します。MySQLがその量を超えないように制限を設ける方法はありますか?
111 mysql  memory  ram 

5
パンダのデータフレームで使用されているメモリを解放するにはどうすればよいですか?
次のようにパンダで開いた非常に大きなcsvファイルがあります。 import pandas df = pandas.read_csv('large_txt_file.txt') これを実行すると、メモリ使用量が2GB増加します。これは、このファイルに数百万の行が含まれているためです。私の問題は、このメモリを解放する必要があるときに発生します。走った… del df しかし、私のメモリ使用量は減りませんでした。これは、pandasデータフレームによって使用されているメモリを解放するための間違ったアプローチですか?もしそうなら、適切な方法は何ですか?
111 python  pandas  memory 

9
.NETアプリケーションのメモリ使用量を削減しますか?
.NETアプリケーションのメモリ使用量を減らすためのヒントは何ですか?次の単純なC#プログラムについて考えてみます。 class Program { static void Main(string[] args) { Console.ReadLine(); } } タスクマネージャーは、x64のリリースモードでコンパイルされ、Visual Studioの外部で実行され、次のように報告します。 Working Set: 9364k Private Working Set: 2500k Commit Size: 17480k x86専用にコンパイルされている場合は少し優れています。 Working Set: 5888k Private Working Set: 1280k Commit Size: 7012k 次に、次のプログラムを試しましたが、同じことを行いますが、実行時の初期化後にプロセスサイズをトリミングしようとします。 class Program { static void Main(string[] args) { minimizeMemory(); Console.ReadLine(); } private static void …

6
画像をバイト配列に変換する最速の方法
デスクトップの画像をキャプチャして圧縮し、受信機に送信するリモートデスクトップ共有アプリケーションを作成しています。画像を圧縮するには、それをbyte []に​​変換する必要があります。 現在私はこれを使用しています: public byte[] imageToByteArray(System.Drawing.Image imageIn) { MemoryStream ms = new MemoryStream(); imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif); return ms.ToArray(); } public Image byteArrayToImage(byte[] byteArrayIn) { MemoryStream ms = new MemoryStream(byteArrayIn); Image returnImage = Image.FromStream(ms); return returnImage; } しかし、ImageFormatに保存する必要があり、リソースも消費する(スローダウン)だけでなく、異なる圧縮結果が生成される可能性があるため、私は好きではありません。Marshal.Copyとmemcpyの使用について読んだのですが、それらを理解します。 それで、この目標を達成する他の方法はありますか?
106 c#  memory  bitmap  bytearray 

8
代入演算子とコピーコンストラクタの違いは何ですか?
C ++での代入コンストラクターとコピーコンストラクターの違いがわかりません。それはこのようなものです: class A { public: A() { cout << "A::A()" << endl; } }; // The copy constructor A a = b; // The assignment constructor A c; c = a; // Is it right? 割り当てコンストラクターとコピーコンストラクターのメモリを割り当てる方法を知りたいですか?
105 c++  memory 

13
Windows XPでのJava最大メモリ
32ビットWindows XP(Java 1.4、1.5および1.6)で実行されるJava SEには、常に1400メガバイトを割り当てることができました。 java -Xmx1400m ... 今日、Java 1.5_16と1.6.0_07を使用して新しいWindows XPマシンで同じオプションを試したところ、エラーが発生しました。 Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine. 試行錯誤の結果、1200メガバイトがこのマシンに割り当てることができる最大容量のようです。 1つのマシンで1400が許可され、別のマシンでは1200しか許可されない理由はありますか? 編集:マシンには、Windowsが認識できる約3.5GBの4GBのRAMが搭載されています。
103 java  windows  memory 

9
バイトをメガバイトに変換する
バイトからメガバイトへの変換を行う3つの方法を見てきました。 メガバイト=バイト/ 1000000 メガバイト=バイト/ 1024/1024 メガバイト=バイト/ 1024/1000 わかりました、#3は完全に間違っていると思いますが、見ました。#2は正しいと思いますが、どのメガバイトが真のメガバイトであるかを明確にするために、尊敬される機関(W3C、ISO、NISTなど)を探しています。この計算がどのように行われるかを明示的に説明している出典を誰かが引用できますか? おまけの質問:#2がメガバイトの場合、#1と#3は何と呼ばれますか? ちなみに、ハードドライブのメーカーは、これについての当局として数えられていません!

11
変数のメモリフットプリント(サイズ)を決定する方法は?
PHP(またはPHP拡張)には、特定の変数が使用するメモリの量を調べる関数はありますか?sizeof要素/プロパティの数を教えてくれます。 memory_get_usageスクリプト全体で使用されるメモリサイズを取得するのに役立ちます。単一の変数に対してこれを行う方法はありますか? これは開発マシン上にあるため、拡張機能やデバッグツールの読み込みが可能であることに注意してください。
102 php  memory 

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