問題タブ [memory-leaks]
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.
java - 最近の JVM では、不可視の参照はまだ問題になっていますか?
私はJava Platform Performanceを読んでいました (悲しいことに、最初にこの質問をしたときからリンクがインターネットから消えたようです)、セクション A.3.3 が心配でした。
私は、スコープから外れた変数はもはや GC ルートとは見なされないだろうという仮定に取り組んでいましたが、この論文はそれと矛盾しているようです。
最近の JVM、特に Sun の 1.6.0_07 バージョンにはまだこの制限がありますか? もしそうなら、分析するコードがたくさんあります...
この論文は 1999 年のものであるため、質問します。特に GC の世界では、状況が変わることがあります。
論文が入手できなくなったので、懸念を言い換えたいと思います。この論文は、メソッド内で定義された変数は、コード ブロックが終了するまでではなく、メソッドが終了するまで GC ルートと見なされることを暗示していました。したがって、変数を null に設定して、参照されるオブジェクトをガベージ コレクションできるようにする必要がありました。
つまり、main() メソッド (または無限ループを含む同様のメソッド) の条件付きブロックで定義されたローカル変数は、変数がスコープから外れる直前にその変数を null にしない限り、1 回限りのメモリ リークを引き起こします。
選択した回答のコードは、問題をよく示しています。このドキュメントで参照されている JVM のバージョンでは、foo オブジェクトが try ブロックの最後でスコープ外にドロップされた場合、ガベージ コレクションを実行できません。代わりに、JVM は main() メソッドが終了するまで参照を開いたままにしますが、その参照を使用することは不可能です。
これは、変数がちょうどスコープから外れようとしている場合でも、変数参照を null にすることがガベージ コレクターの助けになるという考えの起源のようです。
delphi - fastMMでトリッキーなメモリリークを追跡する方法は?
プロジェクトをDelphi2007からDelphi2009にアップグレードした後、不明なメモリリークが発生しました。これまで、fastMMを使用してプロジェクトを追跡しようとしてきましたが、fastMMスタックトレースのレポートは次のとおりです。
そして時々私はこれを得る:
何が実際にメモリリークを引き起こしているのかを理解するためのより良い方法はありますか?
c++ - メモリリークは問題ありませんか?
CまたはC++アプリケーションでメモリリークが発生することは許容されますか?
メモリを割り当てて、アプリケーションのコードの最後の行(たとえば、グローバルオブジェクトのデストラクタ)まで使用するとどうなりますか?メモリ消費量が時間の経過とともに増加しない限り、アプリケーションの終了時にOSを信頼してメモリを解放しても大丈夫ですか(Windows、Mac、およびLinuxの場合)。OSによってメモリが解放されるまでメモリが継続的に使用されていた場合、これを実際のメモリリークと見なすことさえできますか。
サードパーティの図書館があなたにこの状況を強制した場合はどうなりますか?それがなければどんなに素晴らしいかもしれないとしても、そのサードパーティのライブラリを使用することを拒否しますか?
実用上の欠点は1つだけです。それは、これらの良性のリークがメモリリーク検出ツールで誤検知として表示されることです。
javascript - AJAX メモリ リークの防止
私は、AJAX で定期的に更新される一連のデータを表示するように設計された Web アプリケーションに取り組んでいます。一般的な使用シナリオは、ユーザーが 1 日中開いたままにして、ときどきちらりと見ることです。
ブラウザのメモリ フットプリントが時間の経過とともにゆっくりと増加しているという問題が発生しています。これは、Firefox と IE 7 の両方で発生しています (ただし、Chrome では発生しません)。数時間後、IE7 のフットプリントが ~200MB になり、FF3 のフットプリントが ~400MB になる可能性があります。
多くのテストを行った結果、AJAX 呼び出しが応答されている場合にのみメモリ リークが発生することがわかりました。サーバーが何も応答しない場合は、ページを開いたまま何時間も放置してもフットプリントは大きくなりません。
AJAX 呼び出しにプロトタイプを使用しています。したがって、onSuccess コールバックに問題があり、これらのメモリ リークが発生していると推測しています。
プロトタイプ/AJAXでメモリリークを防ぐためのヒントはありますか? または、この問題をトラブルシューティングする方法はありますか?
編集:私が使用しているjsグラフ作成ライブラリに問題があることがわかりました。ここで見ることができます。
asp.net - asp.net アプリの物理メモリが多すぎますか?
私の巨大な 32 ビット Web サービス LLBLGen ベースのデータ アクセス アプリケーションは、専用の 64 ビット マシンで単独で実行されています。プロセスが割り当てられたスペースのほとんどすべて (最大 1.5GB) を解放すると、その物理メモリの消費量は約 2GB まで着実に増加し、その時点から再び増加し続けます。ページ入力値やその他のページ ファイル使用パラメータに目に見える増加は見られないため、ページ ファイルにスワップ アウトされるのではなく、メモリが解放されたように見えます。これはどのようなプロファイルですか?プロセスが可能なすべてのメモリを取得することを実際に妨げるものは何もありませんが、メモリ解放の周りに容認できない http 内部エラーがあります - おそらくクリーンアップは有用な作業をブロックします。クリーンアップを邪魔にならないようにするための良い戦略は何でしょうか。
visual-studio - Visual Studio には Borland の CodeGuard のようなものがありますか?
Visual Studio に Codeguard のようなメモリ リークを報告するものはありますか?
例えば:
ios - iPhone - メモリ リーク - NSData dataWithContentsOfUrl & UIWebView
助けてください!これを12時間見つめています。オンラインで調べても解決策が見つかりません。
私のアプリケーションでは、別々のページ/コントローラーで 2 つの UIView コントロールを使用しています。
- UIImageView (NSData dataWithContentsOfUrl 経由でデータを取得)
- UIWebView
コードを分離して説明しやすくするために、「MyTestApplication」という新しいビュー ベースのプロジェクトを作成しました。
1 - デリゲート関数に単純な NSData dataWithContentsOfUrl を追加しました。
(すべて便利な関数を使用しているため、ここでリリースするものはありません)
代替テキスト http://img.skitch.com/20081110-j5tn5n7ixph95ys4rpchibaw5p.preview.jpg
2 - 実行してリークがないことを確認します (予想どおり)
代替テキスト http://img.skitch.com/20081110-fy2qrkgy47hm4fe2f1aakd4muw.preview.jpg
3 - ViewController.xib を開き、ライブラリから UIWebView を追加するだけです (接続する必要はありません)。
代替テキスト http://img.skitch.com/20081110-d63c3yh1a1kqiciy73q8uyd68j.preview.jpg
4 - 実行して、リークがあることを確認します。(どうして???)
代替テキスト http://img.skitch.com/20081110-qtxcfwntbcc3csabda3r6nfjg6.preview.jpg
私は何を間違っていますか?助けてください!
UIWebView を使用している場合、NSData によってメモリ リークが発生するのはなぜですか? 私はそれを理解していません。ありがとう。
c# - ADO.NET + 大量の INSERT + Excel + C# = 「悪い時間」ですか?
基本的に、大量のデータを Excel ファイルに挿入する必要があります。OleDB 接続を作成するのが最速の方法のようですが、メモリの問題が発生したことがわかりました。INSERT クエリを実行すると、プロセスで使用されるメモリが増加し続けるようです。Excelファイルに出力するときにのみ発生するように絞り込みました(Excelへの出力がなくてもメモリは安定しています)。各ワークシート間の接続を閉じて再度開きますが、これはメモリ使用量に影響を与えないようです (Dispose() と同様)。比較的小さなデータセットで確認できるように、データは正常に書き込まれています。誰かが洞察力を持っているなら、それはありがたいです。
initializeADOConn()はコンストラクターで呼び出されます
initADOConnInsertComm()は、挿入パラメータ化された挿入クエリを作成します
writeRecord()は、新しいレコードが書き込まれるたびに呼び出されます。必要に応じて新しいワークシートが作成されます。
編集:
いいえ、エクセルは全く使いません。私は意図的に Interop.Excel を避けています。パフォーマンスが悪いためです (少なくとも、私が手を出していたからです)。
c++ - GNU C/C++ の Windows でのメモリ リーク検出
Windows 上のオープン ソース C/C++ で使用できるメモリ リーク検出ツールは何ですか?
c - C MySQL クライアント ライブラリの動作
SuSE SLES 9 のストック ライブラリを使用して MySQL データベース 4 サーバーに接続するクライアント アプリケーションがあります。データベースで。
この問題は時々発生しますが、ほとんどの場合、サーバーが数日間稼働している場合に発生します。再起動すると問題が解決すると思われます。
とにかく、MySQL の結果セットを長時間解放しないと、このメモリ リークが発生し、すべての結果セットを常に解放する必要があるこの奇妙な動作で表示されますか? ただし、同じテーブルと同じプログラムは、別のコンピューターで正常に動作します。
アプリケーションまたは mysql クライアント ライブラリの実装の問題が原因で、結果セットが破損する可能性はありますか?