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

メモリリークは、プログラムが割り当てたメモリを解放できなかったが、使用しておらず、回復できない場合に発生します。


3
HPROFファイルを開く際のエラー:IOException:不明なHPROFバージョン
Debug.dumpHprofDataMemory AnalyzerでHPROFファイル(で作成)を開こうとすると、次の例外が発生します。 java.io.IOException: Unknown HPROF Version (JAVA PROFILE 1.0.3) at org.eclipse.mat.hprof.AbstractParser.readVersion(AbstractParser.java:124) at org.eclipse.mat.hprof.Pass1Parser.read(Pass1Parser.java:69) at org.eclipse.mat.hprof.HprofIndexBuilder.fill(HprofIndexBuilder.java:65) at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:203) at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:114) at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:143) at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:123) at org.eclipse.mat.ui.snapshot.ParseHeapDumpJob.run(ParseHeapDumpJob.java:56) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) どうすれば解決できますか?

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


12
.NETのMemoryStreamが閉じていない場合、メモリリークは発生しますか?
私は次のコードを持っています: MemoryStream foo(){ MemoryStream ms = new MemoryStream(); // write stuff to ms return ms; } void bar(){ MemoryStream ms2 = foo(); // do stuff with ms2 return; } 私が割り当てたMemoryStreamが何らかの理由で後で破棄​​されない可能性はありますか? 私はこれを手動で閉じると主張するピアレビューを持っています、そして彼が有効なポイントを持っているかどうかを知るための情報を見つけることができません。

1
FastMMによって特定のメモリブロックが解放されなかったかどうかをプログラムで確認する方法はありますか?
メモリブロックが解放されなかったかどうかを検出しようとしています。もちろん、マネージャーはダイアログボックスまたはログファイルでそれを通知しますが、データベースに結果を保存したい場合はどうなりますか?たとえば、データベーステーブルに、特定のブロックを割り当てたルーチンの名前を付けたいと思います。 FastMMのドキュメントを読んだ後、バージョン4.98以降、メモリの割り当て、解放、再割り当てが発生すると、マネージャから通知を受ける可能性があることがわかりました。たとえば、OnDebugFreeMemFinishイベントはPFullDebugBlockHeader有用な情報を含むaに渡されます。PFullDebugBlockHeader不足していることが1つあります。指定されたブロックがアプリケーションによって解放された場合の情報です。 OnDebugFreeMemFinish解放されていないブロックに対してのみ呼び出されない限り?これは私にはわからないので知りたいです。 問題は、OnDebugFreeMemFinishイベントにフックしてもブロックが解放されたかどうかを確認できなかったことです。 次に例を示します。 program MemLeakTest; {$APPTYPE CONSOLE} uses FastMM4, ExceptionLog, SysUtils; procedure MemFreeEvent(APHeaderFreedBlock: PFullDebugBlockHeader; AResult: Integer); begin //This is executed at the end, but how should I know that this block should be freed //by application? Unless this is executed ONLY for not freed blocks. end; procedure Leak; …

13
メモリリークの診断-許容メモリサイズ#バイトが使い果たされました
私は恐ろしいエラーメッセージに遭遇しました。恐らく骨の折れる努力で、PHPはメモリを使い果たしました: 123行目のfile.phpで####バイトの許容メモリサイズを使い果たしました(####バイトを割り当てようとしました) 制限を増やす あなたが何をしているかを知っていて、制限を増やしたい場合は、memory_limitを見てください: ini_set('memory_limit', '16M'); ini_set('memory_limit', -1); // no limit 注意してください!あなたは症状ではなく問題を解決しているだけかもしれません! リークの診断: エラーメッセージは、メモリがリークしている、または不必要に蓄積されていると私が思うループのある行を指しています。memory_get_usage()各反復の最後にステートメントを出力しましたが、制限に達するまで数が徐々に増加しているのがわかります。 foreach ($users as $user) { $task = new Task; $task->run($user); unset($task); // Free the variable in an attempt to recover memory print memory_get_usage(true); // increases over time } この質問の目的のための最悪のスパゲッティコード想像がグローバルスコープのどこかに隠れていると仮定してみましょう$userかTask。 問題を見つけて修正するのに役立つツール、PHPのトリック、またはブードゥーのデバッグは何ですか?
98 php  memory-leaks 

7
ラージオブジェクトヒープの断片化
私が取り組んでいるC#/。NETアプリケーションは、遅いメモリリークに悩まされています。私はCDBをSOSと一緒に使用して何が起こっているのかを判断しようとしましたが、データが意味をなさないようです。 アプリケーションは64ビットフレームワークで実行されています。リモートホストへのデータを継続的に計算してシリアル化し、ラージオブジェクトヒープ(LOH)にかなりのビットをヒットしています。ただし、一時的なものであると予想されるほとんどのLOHオブジェクト:計算が完了してリモートホストに送信されたら、メモリを解放する必要があります。しかし、私が見ているのは、メモリの空きブロックでインターリーブされた多数の(ライブ)オブジェクト配列です。たとえば、LOHからランダムセグメントを取得します。 0:000> !DumpHeap 000000005b5b1000 000000006351da10 Address MT Size ... 000000005d4f92e0 0000064280c7c970 16147872 000000005e45f880 00000000001661d0 1901752 Free 000000005e62fd38 00000642788d8ba8 1056 <-- 000000005e630158 00000000001661d0 5988848 Free 000000005ebe6348 00000642788d8ba8 1056 000000005ebe6768 00000000001661d0 6481336 Free 000000005f214d20 00000642788d8ba8 1056 000000005f215140 00000000001661d0 7346016 Free 000000005f9168a0 00000642788d8ba8 1056 000000005f916cc0 00000000001661d0 7611648 Free 00000000600591c0 00000642788d8ba8 1056 00000000600595e0 …

1
決して解決された約束はメモリリークを引き起こしませんか?
私は持っています Promiseます。必要に応じてAJAXリクエストをキャンセルするために作成しました。しかし、そのAJAXをキャンセルする必要がないので、それを解決したことがなく、AJAXは正常に完了しました。 簡略化されたスニペット: var defer = $q.defer(); $http({url: 'example.com/some/api', timeout: defer.promise}).success(function(data) { // do something }); // Never defer.resolve() because I don't need to cancel that ajax. What happens to this promise after request? そのような約束を解決してメモリリークを引き起こしたことはありませんか?Promiseライフサイクルを管理する方法について何かアドバイスはありますか?

5
Goは、Javaと同じ微妙なメモリリークの影響を受けますか?
ここに事実があります: Goという言語にはガベージコレクターがあります。 Javaにはガベージコレクションがあります 多くのJavaプログラムには(微妙かどうかにかかわらず)メモリリークがあります メモリリークがあるJavaプログラムの例として(気弱な人のためではなく、質問があなたの信念を揺るがすかもしれません)、「リークを見つける」ボタンさえあるTomcatと呼ばれる小さなJavaプログラムについてここを見てください:方法はありますかTomcatでのアンデプロイメントメモリリークを回避するには? だから私は疑問に思っています:Goで書かれたプログラムは、Javaで書かれたいくつかのプログラムが示すのと同じ種類の(微妙かどうかにかかわらず)メモリリークを示しますか?
91 java  memory-leaks  go 

17
テキストファイルの行数を効率的にカウントします。(200mb +)
スクリプトで致命的なエラーが発生することがわかりました。 Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 440 bytes) in C:\process_txt.php on line 109 その行はこれです: $lines = count(file($path)) - 1; したがって、ファイルをメモリにロードして行数を数えるのが難しいと思いますが、メモリの問題なしにこれを行うためのより効率的な方法はありますか? 行数を数える必要があるテキストファイルは、2MBから500MBの範囲です。たぶんギグ。 助けてくれてありがとう。


2
要素を削除する前にイベントリスナーを削除する必要がありますか?
イベントリスナーがバインドされている子を持つ親要素がある場合、親をクリアする前にそれらのイベントリスナーを削除する必要がありますか?(つまりparent.innerHTML = '';)要素がDOMから削除された場合に、イベントリスナーが要素からバインド解除されていない場合、メモリリークが発生する可能性がありますか?

14
リソースリーク:「in」が閉じられることはありません
Eclipseが次のコードで「リソースリーク:「in」が閉じられることはありません」というウォーミングを与えるのはなぜですか? public void readShapeData() { Scanner in = new Scanner(System.in); System.out.println("Enter the width of the Rectangle: "); width = in.nextDouble(); System.out.println("Enter the height of the Rectangle: "); height = in.nextDouble();

11
割り当てられたメモリでfree()を使用しないことは問題ありませんか?
私はコンピュータ工学を勉強していて、いくつかの電子工学コースを持っています。私はそれを使用して回避することができる(これらのコースの)私の教授の2から、聞いたfree()(後に機能をmalloc()、calloc()おそらく割り当てられたメモリ空間は、他のメモリを割り当てるために再び使用されることはありませんので、など)。つまり、たとえば、4バイトを割り当ててから解放すると、4バイトのスペースができて、再び割り当てられない可能性があります。つまり、穴ができます。 私はそれがおかしいと思います:あなたはそれを解放せずにヒープにメモリを割り当てるおもちゃではないプログラムを持つことはできません。しかし、私には、それぞれにmalloc()がなければならないほど重要である理由を正確に説明する知識がありませんfree()。 だから:使用せmalloc()ずに使用することが適切であるかもしれない状況はありfree()ますか?そうでない場合は、どうすればこれを教授に説明できますか?

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