スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 学習データも自前で作成 | トップページ | 学習データは順調に増加中 »

メモリリーク問題があった

今は、新しいリバーシプログラムの開発フェーズで、新しい評価関数は、精度を上げたいと思っているので、昨日から2台のPCを使ってMasterReversiのセルフ対局で学習データの再作成を始めたのだが、今日の朝、Windows10 PCの方だけ、画面が真っ暗になっていた。

2台のPCの片方は、Corei7 2600の古いWindows7 PCで、もう一台はBootCampでWindows10をインストールしたMacBook Pro 15インチ 2016モデルになる。

で、昨日の夜から、両方でセルフ対局をやらせていたのだが、朝、状況を見てみると、Windows7 PCの方は普通に動作を継続していたのだが、MacBook Proの方は、画面が真っ暗になっていた訳だ。

で、作者的には、また、Windows10が、勝手に、自動更新して再起動後にスリーブでもしてしまったのかなあ、と、思ったのだが、キーボードを叩いてみても、何の反応も無かった。

なので、作者的には、致し方なく、電源ボタンを押してみたのだが、そうすると、キーボードのバックライトが消えた感じがした。

このため、もう一度、電源ボタンを押してみた所、今度は画面が表示されたのだが、その画面には、MasterReversiにはこれ以上メモリ割り当てが出来ません、みたいなダイアログが沢山表示されていた訳だ。

で、作者的には、この時点では、Windows7側のPCでは問題が発生していなかった事もあり、Windows10のバグか何かかなあ、と、思った訳だ。

なので、前述のダイアログを閉じて、10個のMasterReversiを異常終了させて再起動した後、昨日の夜に行わせていたのと同じ処理を再度行わせてみたのだが、その数時間後にタスクマネージャーで見てみると、MasterReversiの使用メモリ量が起動時よりも数百MBも増えていた訳だ。

と、いう事で、この時点で、作者的には、メモリリークが発生している事を認識したのだが、この時点でも、Windows7側のPCでは普通に処理が継続されていた。

しかし、Windows7側のPCでも確認してみた所、セルフ対局を行わせていると、僅かずつではあるのだが、こちらでも、使用メモリ量が増えていく事を確認した。

なので、今現在の開発環境としているWindows8.1 PCでも、動作確認してみたのだが、ここでも、メモリリークは発生したのだが、この環境でも、リーク量はWindows10環境よりも少なかった。

このため、作者的には、VisualStudio 2015をインストールしてある別のWindows10 PCでデバッグを始めた訳なのだが、Visual Studio 2015にあったメモリ使用量のスナップショットが採れる機能を使ってみると、いとも簡単に、メモリリークの発生箇所を特定できた訳だ。

と、いう事で、修正してみた訳なのだが、その後は全環境でメモリ使用量の増加は見られなくなったので、メモリリーク問題は解決した筈だ。

ちなみに、メモリリークが発生していた箇所は2か所あって、その一つはリバーシボードの描画処理なのだが、ウインドウを最小化してあっても、この処理は動作するので、リークから逃れる事は出来ない。

もう一つはコンピュータが着手した時に動作する処理なのだが、この処理も、コンピュータに着手させる場合には必ず発生するので、リークから逃れる事は出来ない。

ただし、これら処理はかなり前のバージョンから存在していた筈なのだが、今頃になって、リークの存在を発見したのは、今回、セルフ対局を膨大な数行わせているからだ。

つまり、作者的にはよくやっているエンジン対局なんかでは、前述の二つ目だけしか影響せず、このリーク量は一つ目よりもずっと小さいので、実際問題としては、殆どリークは発生しないし、通常のリバーシボードを使った対局を行う場合にも、リーク量は少ないので、数十回や数百回程度の対局ではメモリ使用量の増加に気が付かない筈な訳だ。

なので、実際問題としては、今回の様に、膨大な数のセルフ対局を繰り返させようとしない限り、問題にはならない筈なのだが、作者的には、既に不具合は修正したので、次バージョンでは、メモリリーク問題は無くなる事になる筈だ。

なお、メモリリーク問題がWindows10 PCでは顕著に表れ、Windows7/8.1では影響が少なかった理由は作者には判らないのだが、推測しておくと、リークするメモリはヒープ領域から獲得しているのだが、Windows10では、ヒープメモリの管理ブロックサイズが大きくなっていて、実際に使っているサイズよりも大きめのメモリが確保される為に、それがリークするとメモリ増加量が顕著になるのかもしれない。

« 学習データも自前で作成 | トップページ | 学習データは順調に増加中 »

トラックバック

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

この記事へのトラックバック一覧です: メモリリーク問題があった:

« 学習データも自前で作成 | トップページ | 学習データは順調に増加中 »

2018年10月
  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 のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google