2011-12-16 2 views
1

私はテキストエディタアプリケーションを作成しています。実験として、私はアプリケーションを実行し、私は別のアクションを実行すると、タスクマネージャでそのメモリ使用量を監視しました。テキストエディタアプリケーションにメモリリークがありますか?メモ帳よりも3倍多くのメモリを消費するのはなぜですか?

  • 初めてアプリケーションを起動したとき、3000 kBを使用しました。私は

  • を入力すると

  • は、それは私が保存をクリックすると、(これはバックダウンに行かなかったことが

  • を9000kbまで撃たれ、その後、それだけで8500キロバイトに滞在し、ほぼ同じ滞在しました3000kb)

これはメモリリークによるものですか?私はメモ帳と同様の動作を観察したので少し混乱しています。

  • 発足:1500キロバイト
  • 省:6000キロバイト
  • 保存した後、メモリは5000キロバイトまた

周りにとどまり、なぜ私のアプリケーションは、メモ帳よりも3倍多くのメモリを占有しないものを何かがそれを引き起こす可能性がありますか?私は心配すべきですか?

+0

まず、「タスクマネージャ」は、メモリリークがあるかどうかを診断することさえできません。第二:誰もあなたのエディタがソースコード/メモリプロファイラなしでメモリリークを持っているかどうかを知ることはできません。 – Yahia

+0

また、Qt4を使用しているようです。メモリプロファイラを実行すると、心配することができます。 –

+0

あなたはタグQtを持っているので、あなたはそのフレームワークを使用していると思います。これは、直接win32 api呼び出しを使用するのに比べて、すでに多くのメモリを消費します。 – johanvdw

答えて

1

まず、そのメモリが実際にどこで使用されているか知りたいと思ってください。メモリ分析/プロファイリングを行うための複雑なプログラムがたくさんありますが、タスクマネージャより詳細なものが必要ですが、かなりシンプルで無料ですが、Sysinternals vmmapは素晴らしいです。

http://technet.microsoft.com/en-us/sysinternals/dd535533

他の人が述べたように、保存はおそらく、他のライブラリが引っ張られるために引き起こしている。テキスト自体はまたあなたのメモリ使用量に貢献しようとしています。 VMMapは、どれだけあなたのものがどれくらいで、他のものがどれくらいあるかを判断するのに役立ちます。次に、あなたの部分が時間の経過とともに実質的に成長しているかどうかを見ることができます。メモリプロファイラを使用しない場合、実際にメモリがリークしているかどうかを実際に確認するには、ストレステストに長時間を要します。そうしないと、リークが実際に簡単に気付くほど大きくならない可能性があります。

1

初めて起動する[ファイル保存]ダイアログボックスは、おそらく大量のメモリを消費します。ファイルダイアログを開くと、エクスプローラのコピーがウィンドウに埋め込まれ、エクスプローラをプロセスにロードすると、それに沿ってたくさんの手荷物が運ばれます。

1

Qtを使用しているということは、ソフトウェアに不要なコードがたくさん追加されていることを意味します。例えばQt Coreは2MB以上、Qt Guiは約8MBです。一方、マイクロソフトはおそらく純粋なC/C++とWindows APIを使用してメモ帳をコーディングしています。つまり、実行可能ファイルのサイズが小さくて高速です。

最後に、コンパイラによっても異なります。 MinGWは、Visual C++コンパイラよりも大きく、遅い実行ファイルを作成します。もし可能であれば、Microsoftのコンパイラを使ってみてください。

0

私はメモ帳でまったく同じように試しましたが、保存にはより多くのメモリが必要です。現在のファイルを開いて保存すると、メモリに差はありません。ファイルを作成するには、最後に大量のメモリが必要です。

関連する問題