忍者ブログ

DTXManiaXG(ver.K)開発日誌

「-真のX-Gradeを見るまで俺は止まらない-」 DTXManiaXG(verK)の開発ブログです。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

4/30~5/3 メモリリーク大幅修正で修正した点

実家に帰ってた時、偶然にもメモリリークしているテクスチャがどこにあるのかが表示されるようになったので色々原因を突き止めてました。

その中で一番重要な点を書いておきます。(今後の再発防止)

(CActivity管理下のクラス)On活性化、OnManagedリソースの生成メソッドで再侵入検知をしていない
解放せず同じCTexture変数に再度テクスチャを生成するとメモリリークが発生します。
つまり既に生成されているかチェックしていないにも関わらず、先に挙げた2つのメソッドに侵入するとメモリリークが何回も発生するわけです。
CActivityには活性化したかのフラグか存在しているので、

if( !this.活性化していない) {
}

このように書いてやるのが正解です。

これは普通のCTextureも同じで、選曲画面で画面からはみ出した曲名テクスチャをきちんと解放していなかったのがだいぶまずかったです。
さらにバー中央の曲名テクスチャに関しても、生成前に一度解放処理を行ってから生成するようにしました。
解放処理が挟まると重くなると見せかけて、(あくまでも自分の環境ですが)こちらのほうが速いという新事実。

それからC# 6.0以降は「Null条件演算子」なるものが使えます。

this.txTEST?.Dispose();

現行版ではヘルパーメソッドとして「CDTXMania.t安全にDisposeする( ref Object)」を用いているのですが、この演算子でショートカットできるというわけですね。
ただ全部のコード全箇所での変更にはだいぶ時間がかかるので、TJAP2fPCやVer.Kでの最適化はもう少し後になるかと。
(※FROM先生のDTXMatixxを参考にしました。)
PR

コメント

現在、新しいコメントを受け付けない設定になっています。

プロフィール

HN:
kairera0467
年齢:
22
性別:
男性
誕生日:
1997/08/11
自己紹介:
DTXManiaの新人開発スタッフ。
Maill:gennsou76573●gmail.com
(●を@に変えてくださいね。)

最新リリース

Twitter

ブログ内検索