質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

メモリリーク

メモリリークは、プログラムファイルがメモリの解放に失敗した時に起こります。

Q&A

解決済

1回答

6806閲覧

Pythonアプリ メモリリークしていないかの検証方法

sin_250

総合スコア112

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

メモリリーク

メモリリークは、プログラムファイルがメモリの解放に失敗した時に起こります。

0グッド

1クリップ

投稿2016/03/31 13:44

Python 3.4でWindows用のGUIアプリケーションを作りました。
Pythonスクリプトをexe化して使用するもので、ネットワーク経由でログを収集するものです。
(開発現場で使う便利ツールです)

念のためメモリリークをしていないかを確認しようと
当ツールを動かし続けて放置し、タスクマネージャで使用メモリを確認したところ、
使用メモリは徐々に増えていきます。
元が38M程度で、丸一日経って41MB使用というジワジワした増え方です。
OSはXPベースの組み込み用Windowsです。

Pythonですので、あるタイミングになったらGCが働いて使用メモリがガクッと減るのだろうと思っているのですが、
どこまで増えたら働いてくれるのか、わかりません。
これがメモリリークでないことを確認するにはどうしたらいいのでしょうか。
Pythonの場合はメモリリークなどは心配する必要はないのでしょうか。

アプリ内でやっていることは、単純にsocketを作ってreceiveを繰り返すループを作り、
得られたデータはQueueに入れ、そのQueueを一定間隔でチェックして中身があったら画面に表示
およびファイルにwriteするという単純なものです。
ただし長時間放ったらかしで動かしたいため、メモリリークのような問題がないことを確認したい次第です。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

GCが動いていないだけなのかどうかわからないというのであれば、GCを定期的に強制実行し、回収不能オブジェクトをログに出力などしてみるのはどうでしょうか?
参考: http://d.hatena.ne.jp/hirogl_python/20100506/1273110476
※ 上はちょっと古い記事なのでPython2.xだと思われます。Python3.xの場合は関数等が一部異なる可能性があります。

投稿2016/03/31 21:46

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sin_250

2016/04/04 13:58

ありがとうございます。 ソース中に定期的にgc.collect()で強制実行するテスト版を作り そのテスト版の挙動で確認することができました。 所用でお返事遅れ、申し訳ございません。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問