問題タブ [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.
c - Windows に代わる適切な Valgrind はありますか?
Valgrind を調べて、C コーディング/デバッグが Linux 専用であることを発見したとき、OS を Linux に移行する必要や興味がないので、Windows 用の同様に優れたプログラムがあるかどうか疑問に思っていました。
memory - メモリ リークをテストする方法
何百ものユーザー アクションが考えられるアプリケーションがあり、メモリ リーク テストをどのように強化するかを考えます。
ソフトウェアを手動でテストするときに、アプリケーションがメモリを消費しすぎているように見える場合は、メモリ ツールを使用して原因を特定し、修正します。これはかなり遅く、効率の悪いプロセスです。問題が発見されるのが遅く、1 人の開発者の善意に依存しています。
どうすればそれを改善できますか?
- 一部のアクション(「ファイルを閉じる」など)がメモリを回復してログに記録することを内部的に確認しますか?
- 単体テスト内のメモリ状態をアサートします (ただし、これは面倒な作業になるようです) ?
- 時々手動で定期的にチェックしますか?
- 新しいユーザー ストーリーが実装されるたびにそのチェックを含めますか?
c++ - 再帰的な C++ 呼び出しでのメモリ割り当て
再帰的な C++ プログラムでメモリの割り当てと割り当て解除に問題があります。自動メモリ管理ソリューションを使用せずに、誰かが私が経験しているメモリリークを解決するのを手伝ってくれるのではないかと思います.
次のコードは基本的に問題を説明しています (これは不自然な例ですが、間違いや簡略化を修正してください)。
数値の値を保持する数値クラス:
再帰を実行する 2 つの関数:
ご覧のとおり、再帰関数で割り当てられたメモリがリークされていますが、再帰の性質に基づいて、このメモリをどこから解放できるかわかりませんか?
c++ - VisualStudio_CrtDumpMemoryLeaksは常にオブジェクトダンプをスキップします
CRTメモリリーク検出を使用しようとしていますが、MicrosoftVisualStudioで次のメッセージが表示され続けます。「メモリリークが検出されました-オブジェクトダンプをスキップします。」私はそれを実際に実行してオブジェクトダンプを取得することはできません。
運が悪かったので、メモリリーク検出に関するMicrosoftの記事(http://msdn.microsoft.com/en-us/library/e5ewb1h3(VS.80).aspx )の指示に従いました。
私のstdafx.hには(プロジェクト全体を再構築しました):
私のアプリケーションのエントリポイントには、次のものがあります。
また、ファイル名と行番号がMicrosoftがアドバタイズした形式で表示されることを期待しています。
私はオブジェクトダンプを取得することさえできませんでしたが、他の人がこれらの線に沿って何かを見ていると言っていることに気づきました(_CRTDBG_MAP_ALLOCが定義されていても):
new演算子とdelete演算子のオーバーライドに時間をかけたくないので、CRTデバッグが役立つことを期待していました。これがうまくいかない場合は、new演算子とdelete演算子をオーバーライドしてしまう可能性がありますが、実際には、ファイル名と行番号(指を交差させる)を使用して割り当て情報を取得したいと思います。
ありがとう、キリル
java - java.hprof.txt をバイナリ hprof 形式に変換する方法は?
バイナリ hprof 形式に変換したい java.hprof.txt ファイル (OutOfMemoryError の後に自動的に生成される) があります。これを行う簡単な方法はありますか?
c++ - ワーカースレッドでの操作をキャンセルするときにメモリリークを防ぐにはどうすればよいですか?
現在、数学的分析で構成されるデスクトップアプリケーションに取り組んでいます。GUIとc++で記述されたプロジェクトにqtを使用しています。ユーザーが分析を開始すると、ワーカースレッドを開いてプログレスバーを開始します。これまではすべて問題ありませんでしたが、ユーザーが操作をキャンセルすると問題が発生します。操作が複雑で、複数の関数とオブジェクトを使用しています。いくつかのメモリを割り当て/割り当て解除します。キャンセル操作で回復するにはどうすればよいかを知りたいメモリリークが発生する可能性があるため、キャンセル操作を堅牢かつ安全に行うには、どのパターンまたは方法を使用する必要がありますか?
私の考えは例外をスローすることですが、操作は非常に複雑なので、すべての関数にtry-catchを適用する必要がありますか、それともより一般的な方法であるパターンがあります。
編集:問題は、オブジェクトがスコープ間で転送されるため、shared_ptrまたはauto_ptrで問題が解決しないことです。フラグのアイデアは解決できますが、非常に多くのコードが必要であり、簡単な方法があるはずです。
perl - 長時間実行されている Perl プログラムでメモリ リークを見つけるにはどうすればよいですか?
Perl は GC に参照カウントを使用するため、誤って循環参照を作成するのは非常に簡単です。私のプログラムがますます多くのメモリを使用しているように見えます。おそらく数日後にはオーバーフローするでしょう。
Perl でメモリ リークをデバッグする方法はありますか? プログラムにアタッチして、さまざまなタイプのオブジェクトの数を取得することは、良い出発点です。どのオブジェクトが予想よりもはるかに多いかを知っていれば、それらへのすべての参照をチェックして、できればリークを修正できます。
memory-leaks - Velocity CTP2 深刻なメモリ バグ
cachefactory のインスタンスを作成し、それをもう使用しない場合、オブジェクトの作成中に使用されたメモリは解放されません。これは、cachfactory が複数回作成される可能性のあるすべての Web アプリまたはシナリオに大きな影響を与えます。この症状は、プロセスのメモリ使用量が異常に高くなり、IIS では、割り当てられたメモリをより迅速にオーバーランさせるため、アプリをより頻繁にリサイクルする必要が生じる可能性があります。
次のコードは、約 500MB の増加を示します。つまり、メガバイトのメモリ使用量です!
複製するには、次のコードをアプリに追加します。
これには 2 つの回避策しかありません。
- Velocity チームはバグを修正します (そして、私は彼らがそうすると確信しています)
- アプリの静的メソッドで同じ cachefactory オブジェクトを使用し、キャッシュを使用するたびにそれを参照する必要があります。(これは機能しますが、私の意見では最適ではありません。)
また、キャッシング メソッドをラップするために使用できる cachingscope も用意しており、これをまもなく codeplex に投稿します。トランザクション スコープのようにキャッシング メソッドをラップすることができ、ロックと接続を管理します。
objective-c - 関数内で割り当てられたメモリへのポインタを返す
Cでは、次のようなものは、解放できないメモリへのポインタを返すため、災害(つまり、メモリリーク)になります。
返されたポインタが指すメモリが自動解放されるので、Objective-Cでは実際にそれは完全に問題ありませんか?大丈夫だとしても、なんらかの理由で眉をひそめているのでしょうか?以下のように、Cスタイルを好む理由はありますか?