スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« Ubuntu版も微修正 | トップページ | その他の変更点 »

メモリリーク調査とか

今は、macOS用ネイティブ版AGMPlayerの開発フェーズで、初版は完成済みなのだが、そのリリース前に関連既存ソフトの修正版を出す。次はUbuntu版AG-ムービーカッターなのだが、評価中にメモリリークっぽい現象を見つけたので・・・

結論から書くと、WebM/Oggエンコード時には、実際にメモリリークがあり、その修正も行えた。

なので、この調査と修正のために、Ubuntu版AG-ムービーカッターのリリースは順延したのだが、修正版では、現行版にあるメモリリーク問題は解決されている筈だ。

そして、上記の問題はUbuntu版AGMConvでも同様だったので、次にリリースするUbuntu版AGMConvでも、メモリリーク問題はなくなっている筈だ。

と、言う事で、作者的には、冒頭では、メモリリーク「っぽい」現象と書いているのだが、これは、ソフトを利用していて、そのソフトが利用するメモリ量が増えた場合、それはメモリリークなのか、というと、そういう訳ではないからだ。

例えば、動画プレイヤーなんかだと、ファイルをオープンして使用メモリ量が増えたとしても、それは当たり前の話なので、多分、ここでの使用メモリ量の増加をメモリリークだと言う人はいないかもしないのだが、そのファイルを閉じた後にも、使用メモリ量が元に戻らない場合、その現象はメモリリークなのか、というと、そうとは限らない訳だ。

何故なら、動画を再生する為には、普通は、データ処理用のワークメモリが必要になるのだが、メモリのアロケーションには時間がかかるので、一旦、必要となって作成したワークメモリは、プログラムが終了するまで解放しない、というプログラムの作り方もあるからだ。

実際、作者製ソフトでも、そういう扱いのワーク領域は沢山あるので、プログラム起動時には使用メモリ量が少なくても、色々とデータを扱っていると使用メモリ量が増え、データをクローズしても、そのメモリ量が減らない、なんて事も往々にしてあるのだが、この現象は、プログラム開発者が処理性能を鑑みて、敢えて、そうしてあるので、メモリリークではない訳だ。

と、言う事で、何かのデータ処理をやっていると使用メモリ量が増え、そのデータ処理を完了させても使用メモリ量が元に戻らなかったとしても、その様な現象はメモリリークであるとは限らない。

しかし、だとしても、プログラム起動時になら普通に行えていた処理が、使っている内に使用メモリ量がドンドン増えたがために、次に同じ事をやろうとしても、メモリ不足で行えない様になるソフト、というのも問題だ。

なので、実際問題としては、使用済メモリを解放しない、という方針にも限度があって、実害が出る様なら、方針の変更も必要になるのだが、当然の事ながら、そんな方針とは関係なく、バグで、メモリリークが発生する事もある。

で、今回、作者的には、メモリリークっぽい現象を見つけ、最終的には、それをメモリリークバグとして修正したのだが、当然の事ながら、その修正を行った処理というのは、純粋な作者製ルーチンではない。

つまり、Libavのライブラリ関数を使った処理ルーチンで、メモリリークっぽい現象が発生したので、作者的には、その現象が、Libavが処理性能の向上等を目指して敢えて行っているメモリ温存の結果なのか、メモリリークなのかの判断が難しかった訳だ。

しかし、結果的には、作者的なLibavの使い方が不十分で、後でメモリ解放が必要な関数を使っていながら、そのメモリを解放していないのが問題である事が判った。

つまり、作者的には、今回の件については、処理性能等を鑑みて上記の様にしていた訳ではないので、メモリリークっぽい現象は、作者が仕込んだバグによるメモリリークである事が確定したので、作者的には、そのバグを修正した訳だ。

と、言う事で、Ubuntu版AG-ムービーカッターの変更作業には、予定外の時間がかかってしまったので、一連のリリースは少しずつ遅れる事になる。

« Ubuntu版も微修正 | トップページ | その他の変更点 »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/65500318

この記事へのトラックバック一覧です: メモリリーク調査とか:

« Ubuntu版も微修正 | トップページ | その他の変更点 »

2017年8月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google