問題タブ [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.
.net - Silverlight メモリ プロファイラーは存在しますか?
CLR プロファイラーは、Silverlight CLR では機能しないようです。別のメモリ プロファイラーは存在しますか?
ruby-on-rails - Ruby/Ruby on Rails メモリリーク検出
Ruby on Rails を使用して小さな Web アプリを作成しました。その主な目的は、xml (ファイルは最大数 MB になる可能性があります) からの結果をアップロード、保存、および表示することです。約 2 か月実行した後、mongrel プロセスが約 4GB のメモリを使用していることに気付きました。ruby のメモリ リークのデバッグについて調査しましたが、多くは見つかりませんでした。そこで、質問が 2 つあります。
- Ruby/Rails でメモリ リークを見つけるために使用できる優れたツールはありますか?
- Rubyでメモリリークを引き起こすコーディングパターンは何ですか?
c++ - 単体テストの実行中のメモリリークの検出
一連の単体テストを備えたWin32C++アプリがあります。単体テストの実行が終了したら、解放されていないメモリに関する人間が読める形式のレポートを自動的に生成したいと思います。理想的には、レポートには、解放されていない各割り当てのファイルと行番号情報を含むスタックが含まれます。ある実行から次の実行への差分を容易にするために、それらを一貫した順序で生成しておくと便利です。(基本的に、valgrind --leak-check = fullの結果が必要ですが、Windowsでの結果が必要です)。
私はUMDHが実行中のプロセスからこの種の情報を取得することに成功しましたが、そのツールは既存のプロセスに接続した場合にのみ機能するようです。単体テストを実行するたびに、これが自動的に行われるようにしたいと思います。
これを行うことができるツールはありますか?もしそうなら、私はそれをどのように使用しますか?
ありがとう!
javascript - JavaScript でメモリ リークが発生する原因を知っていますか?
JavaScript でメモリ リークが発生する原因を知っていますか? ブラウザに興味があります: IE 7、FireFox 3、Safari 3
c++ - 関数内の文字列リテラル: 自動変数またはヒープに割り当てられていますか?
関数内で使用する文字列リテラルは自動変数ですか? それとも、手動で解放する必要があるヒープに割り当てられていますか?
以下に示すコードのような状況があり、文字列リテラルをクラスのプライベート フィールド (コードで ONE としてマーク) に割り当て、それを後でプログラムで取得して使用します (TWO としてマーク)。スタック内の変数を ONE 内のフィールドに割り当てていますか? この場合、プログラムが十分に小さかったために機能したダングリング ポインターをコードが参照している可能性はありますか?
コンパイルして実行しましたが、問題なく動作しましたが、実際のプログラムでこのようなクラスのフィールドに文字列リテラルを割り当てているときに奇妙なクラッシュが発生し、上記のケースが疑われます。
変数「s」をポインターではなくchar配列として宣言する必要がありますか? std::string を使おうと思っているのですが、ちょっと気になるところです。
いつものように、ポインタやヘルプは大歓迎です:)ありがとう。
java - Java での循環参照
複雑で循環的な方法で相互に参照するクラス インスタンスの集合体を考えると、ガベージ コレクターがこれらのオブジェクトを解放できない可能性はありますか?
これは過去に JVM の問題だったことを漠然と思い出しますが、これは何年も前に解決されたと思っていました。それでも、jhat を調査したところ、現在直面しているメモリ リークの原因が循環参照であることが明らかになりました。
注: 私は常に、JVM が循環参照を解決し、そのような「ゴミの島」をメモリから解放できるという印象を受けてきました。ただし、誰かが例外を見つけたかどうかを確認するために、この質問を投げかけています。
delphi - Delphi 5 のハッシュテーブルの実装
Delphi 5 の優れた無料の Hashtable 実装を知っていますか?
Hastable で大量のデータを整理する必要があり、Web で利用可能なほとんどの実装で見つかったメモリ リークの問題が少し心配です。
Tks
c# - 単純な WPF サンプルにより、制御不能なメモリの増加が発生する
アプリケーションの 1 つで見られる問題を、信じられないほど単純な再現サンプルに要約しました。何かが間違っているか、何かが欠けているかどうかを知る必要があります。
とにかく、以下はコードです。この動作は、コードが実行され、OutOfMemoryException でクラッシュするまでメモリ内で着実に増加するというものです。これにはしばらく時間がかかりますが、動作としては、オブジェクトが割り当てられ、ガベージ コレクションは行われません。
私はメモリ ダンプを取得し、!gcroot を実行したり、ANTS を使用して問題を特定したりしましたが、しばらく作業を続けており、新しい目が必要です。
この再現サンプルは、Canvas を作成し、それに Line を追加する単純なコンソール アプリケーションです。これは継続的に行われます。これがコードのすべてです。システムが応答しなくなるほど CPU に負担がかからないようにするため (そして、GC が実行できないという奇妙な事態が発生しないようにするため)、時々スリープします。
誰にも考えはありますか?.NET 3.0 のみ、.NET 3.5、および .NET 3.5 SP1 でこれを試しましたが、3 つの環境すべてで同じ動作が発生しました。
また、このコードを WPF アプリケーション プロジェクトにも配置し、ボタン クリックでコードをトリガーしたことにも注意してください。
注: 以下の最初の回答は、WPF アプリケーションのボタン クリック イベント中に同じ動作が発生することを既に明示的に述べているため、少し根拠がありません。ただし、そのアプリでは限られた回数 (たとえば 1000 回) の反復のみを行うことを明示的に述べていませんでした。そのようにすると、アプリケーションをクリックしたときに GC を実行できます。また、メモリ ダンプを取得したところ、オブジェクトが !gcroot を介してルート化されていることがわかったと明示的に述べたことにも注意してください。また、GC を実行できないことにも同意しません。コンソール アプリケーションのメイン スレッドで GC が実行されません。特に、コンカレント ワークステーション GC がアクティブであることを意味するデュアル コア マシンを使用しているためです。ただし、メッセージ ポンプはあります。
その点を証明するために、DispatcherTimer でテストを実行する WPF アプリケーション バージョンを次に示します。100 ミリ秒のタイマー間隔中に 1000 回の反復を実行します。ポンプからのメッセージを処理し、CPU 使用率を低く保つのに十分な時間。
注2:最初の回答のコードを使用しましたが、メモリの成長が非常に遅かったです。1ms は私の例よりもはるかに遅く、反復回数が少ないことに注意してください。成長に気づき始める前に、数分間実行する必要があります。5 分後、30MB の開始点から 46MB になります。
注 3: .Arrange の呼び出しを削除すると、成長が完全になくなります。残念ながら、多くの場合、(RenderTargetBitmap クラスを介して) Canvas から PNG ファイルを作成しているため、この呼び出しは私の使用にとって非常に重要です。.Arrange を呼び出さないと、キャンバスはまったくレイアウトされません。
.net - .NETCF でのメモリ リーク - 動的コントロールを作成していますか?
.NET CF アプリケーションでメモリ リークの問題があります。
RPMを使用して、動的に作成するコントロールが期待どおりにガベージ コレクションされないことを確認しました。.NET ウィンドウ フォームで同じコードを実行すると、動作が異なり、期待どおりにコントロールが破棄されます。
プロセス ヒープカウンターの PerfMon 経由の RPM からの出力を参照してください。
GC ヒープ:
私の推測では、パネルへの弱い参照は、なんらかの不明な理由でオブジェクトを GC の対象にできないのではないでしょうか?
注: Dispose()はサンプルの問題を解決しますが、オブジェクトが使用されなくなった時期を明確に判断できないため、既存のアプリケーションに簡単に組み込むことはできません。
問題を説明するために、ソースの簡略版を含めました。
更新:
1. GC.Collect() を呼び出しても、パネルがクリーンアップされません。
2. Windows CE 4.2 デバイスで .NET CF 2.0 SP1 を使用します。
javascript - Firefox で JavaScript メモリ リークを追跡およびデバッグするにはどうすればよいですか?
私はこれを文字通り1か月間追跡しようとしましたが、成功しませんでした. 車に複数の写真がある場合、基本的に検索結果でサムネイルを回転させることができる車の広告 Web サイトにこのコードがあります。次の場所で実際の動作を確認できます。
mootools 1.2フレームワーク上に構築されています。問題は、Firefox 3 では、次の在庫ページのように回転する画像でページがいっぱいになると、このスクリプトが時間の経過とともにかなり大量のメモリを消費することです。
問題のスクリプトのソースは次の場所にあります。
メモリリークの原因についてのアイデアはありますか? 奇妙なことに、このコードは IE7 で適切に動作します。