問題タブ [fastmm]

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.

0 投票する
6 に答える
2013 参照

delphi - FastMM はすべてのメモリ リークを検出しますか

誰かが最近 (私のプログラムはメモリを解放しません。なぜですか? )、私のプログラムがいくらかのメモリをリークしていると提案しました。FastMM をアグレッシブに設定していますが、プログラムをシャットダウンしてもメモリ リークは報告されません。

とにかく、FastMM で検出されないメモリ リークがあるかどうか知りたいですか?

更新: 私は個人的に Win API を使用してメモリを割り当てません。しかし、私が使用する一部のサードパーティ コンポーネント (それほど多くはありません) がそれを使用する可能性があるのではないかと心配しています。FastMM がインターセプトできない可能性のあるすべての API 呼び出しを教えていただけますか? コードでそれらを検索します。ありがとう。


Delphi 7、Win 7 32 ビット
FastMM 4.97
インターフェイスには興味がありません。

0 投票する
5 に答える
2653 参照

delphi - プログラムに必要なメモリはどれくらいですか?(FastMM vs Borland MM)

私は最近、私のプログラムで奇妙な振る舞いを見ました。大量のオブジェクト(500MBのRAM)を作成して解放した後、プログラムのメモリフットプリントは元のサイズに戻りません。それでも160MBのフットプリントを示しています(プライベートワーキングセット)。

通常の動作?

Borlandのメモリマネージャはこのように動作しないため、可能であれば、これがFastMMの正常な動作であることを確認(または確認)してください。かなり複雑なMDI子(複数のコントロール/オブジェクトを含む)を作成する便利なプログラムがある場合は、次のことができます。そのMDI子の250個のインスタンスを(同時に)ループで作成し、それらをすべて解放して、メモリフットプリントを確認します。これらのMDIの子で少なくとも200〜300MBまたはRAMを消費することを確認してください。

特に、まだDelphi 7を使用している場合は、FastMMを一時的に無効にすることで違いを確認できます。

ありがとう


誰かが興味を持っている場合、特に何らかの証拠が必要な場合、これはメモリリークではありません(私のコードのメモリリークではないことを願っています-これはこの投稿のポイントの1つでもあります:それが私のせいであるかどうかを確認すること)、ここに元の議論があります:

私のプログラムはメモリを解放しません。なんで?
未使用のメモリを解放するようにメモリマネージャを説得する方法

0 投票する
3 に答える
585 参照

delphi - FastMM が突然 Graphics32 のメモリ リークを報告する

空のプロジェクトがあります (フォームのみが含まれています)。この行をプロジェクト 'USES GR32_Image;' に追加すると、アプリケーションを実行すると、FastMM はプログラムにリークを示します。FastMM はフル デバッグに設定されています。私のプログラムには、Delphi IDE が生成するものと「uses gr32」行を除いて、コードはありません。

その報告は無意味です。完全なログは次のとおりです: http://pastebin.com/Yhev3rJ2
ソースコードは次のとおりです: http://pastebin.com/VjRrRiS8

以前に Graphics32 ユニットを使用したことがありますが、問題はありませんでした。このリークがあるのはなぜですか? FastMM が適切なレポートを生成できないのはなぜですか?

0 投票する
2 に答える
1842 参照

delphi - FastMM4、Delphi6、TApplication のリーク?

D6でFastMM4をチェックしました。「フォーム」を使用して単純なアプリケーションをデバッグすると、メモリ リークが発生するたびに 3 行が発生します。

このアプリケーションでメモリ リークが発生しました。小さなブロック リークは次のとおりです (ポインターによって登録された予想されるリークを除く)。

13 ~ 20 バイト: TObjectList x 3、不明 x 3 29 ~ 36 バイト: TWinHelpViewer x 1 37 ~ 52 バイト: THelpManager x 1

これは正常ですか?

これはどのようなことが原因ですか?

ありがとう: dd

0 投票する
2 に答える
922 参照

delphi - Delphi エキスパート (dll) で FastMM を使用する方法

Delphiエキスパート(dll - Delphi 5)を作りました。エキスパートのメモリ リークをテストしたいのですが、FastMM を dll エキスパートに使用するにはどうすればよいですか? 標準のメモリ マネージャーの代わりに (私の dll 用に) fastmm を使用することは可能ですか?

0 投票する
3 に答える
2586 参照

delphi - FastMM が誤ってアクセス違反を報告している可能性はありますか?

通常のコンパイルでは期待どおりに動作する複雑なアプリケーションがありますが、FastMM 4.97 (最新) を使用してコンパイルすると、フォームを閉じるとアクセス違反が発生します。AV は、メッセージ ディスパッチが、既に破棄されているフォーム上のボタンを対象としたメッセージを処理しようとしたときに発生します。また、プロジェクトで Eurekalog 6.1.0.1 (最新) を有効にしています。この同じコードが FastMM の FullDebug モードを無効にして実行された場合、ランタイム例外はトラップされません。

状況によっては、FastMM が EXE の動作を変更して、アクセス違反を引き起こしたり、誤って報告したりする可能性はありますか?

FastMM エラー レポートは次のとおりです。

0 投票する
1 に答える
340 参照

delphi - プロジェクト ファイルから FastMM497 を削除するにはどうすればよいですか?

プロジェクト ファイルで FastMM を使用して 1 週間実行した後、プログラムを完全に実行し、私の知る限り、FastMM497 によって発生した 3 つのエラー メッセージを除いてすべて削除しました。ここで、FastMM をプログラムから削除し、それなしで実行したいと考えています。それをしてもいいですか?それを削除してプログラムを実行すると、プログラムがメモリ リークを開始しますか? 私の知る限りでは、プロジェクトのオプション設定を削除して変更し、以前の状態に戻しました。

ただし、実行可能ファイルを実行すると、プログラムがはるかに大きくなることに気付きました。もともと、私のプログラムは、起動時に 5,000KB から 6,000KB 程度でした。FastMM を実行した後、タスク マネージャーで約 21,000KB になりました。私はこれを正しく見ていますか?

FastMM497 をプログラムに残して、そのままユーザーに展開することはできますか?

0 投票する
3 に答える
1562 参照

delphi - Delphi: FastMM 仮想メモリ管理リファレンス?

最近問題が発生し (最後の質問を参照)、Delphi アプリケーションのメモリ管理を詳しく調べるようになりました。初めての調査の後、2 つの質問があります。

FastMMUsageTracker を使い始めたところ、次のことに気付きました。アプリで使用するファイルを開くと (フォームなども作成されます)、アプリで使用可能な仮想メモリの変動と、"FastMM4 割り当て" メモリの変動との間に大きな相違があります。

まず、用語に少し混乱しています。FastMM によって割り当てられたメモリと、「システムによって割り当てられた」(および予約された) メモリがあるのはなぜですか? FastMM はメモリ マネージャなので、システムがメモリの一部を割り当てるのはなぜですか?

また、そのメモリに割り当てられたオブジェクト/構造の詳細を取得するにはどうすればよいですか? VM グラフは、「システム割り当て済み」、「システム予約済み」、または「FastMM 割り当て済み」のメモリ量を示す場合にのみ役立ちますが、そのメモリを必要とする実際のオブジェクトへのリンクはありません。たとえば、アプリケーションを閉じたときに FastMM が生成するものと同様の実行中のレポートを取得することは可能ですか? FastMM は明らかにその情報をどこかに保存します。


おまけとして、人々がこの主題に関する良い参考文献 (本、ウェブサイト) を推薦してくれれば、それもまた大歓迎です。ネット上にはたくさんの情報がありますが、通常は非常にケース固有で専門家向けです。

ありがとう!

PS: これはリークを見つけることではありません。問題はありません。アプリケーションがますます多くのメモリを使用するため、メモリ管理をよりよく理解し、将来に備えて先手を打とうとするだけです。

0 投票する
4 に答える
2382 参照

delphi - FastMM: Total Allocated Memory

How could I get the total amount of memory, that allocated by FastMM?

I've tried that:

Is it correct?

Anyways it returns something strange. It 5 times less than a value which I can see in Windows task manager. I believe that the amount of memory allocated by a Delphi application equals FastMM allocated memory plus some system overhead. Am I wrong?

0 投票する
1 に答える
367 参照

delphi - FullDebugMode の UBO で FastMM 4.97 を使用する Delphi 2009 の OpenGL 3.2 の問題

Delphi 2009 で OpenGL 3.2 アプリケーションを使用しています。FastMM 4.97 を FullDebugMode で定義して使用すると、UBO はデータを適切に取得しません。FullDebugMode undefined を使用すると、すべてが魅力的に機能します。

例: レンダー フレーム クラスの 2 つのプライベート整数フィールド FWidth と FHeight を指すビューポート ディメンションを設定します。

私はこの問題について数日間頭を悩ませてきましたが、どうすればよいのか本当にわかりません。ここで OpenGL が完全にサポートされるとは思っていませんが、FullDebugMode で実行する場合とそうでない場合の既知の違いに基づいて、誰かが提案をしてくれることを願っています。

プロジェクト設定:

OSはWindows7 64bitです。

編集:見つけた!OpenGL とはまったく関係ありませんでした。Result := @AnsiString(Object.Name)[1];コードベースの他の場所では、メモリが解放されただけで変更されていないため、Thisを使用して PAnsiChar を返す関数がほとんどの場合正常に動作しました。FullDebugMode では、解放時にデータが $80 シーケンスで上書きされました。