マダカレークッテナイデショー

お仕事SE、趣味ドラム

イベントはちゃんと管理しないとメモリリークする

C#/WPFの話題。

 

メモリリーク

メモリリーク (Memory leak) とは、プログラミングにおけるバグの一種。 プログラムが確保したメモリの一部、または全部を解放するのを忘れ、確保したままになってしまうことを言う。 プログラマによる単純なミスやプログラムの論理的欠陥によって発生することが多い。

メモリリーク - Wikipedia

 

プログラマによる単純なミス」

 

、、、すいません

 

C#とかの言語を扱ってるとガーベッジコレクションが働いてくれるので、基本的には「何それおいしいの」状態だったのですが、そういうわけにはいかない。

 

以下、MVVMパターン前提で話します。

なぜ?

View→ViewModel にイベントを購読していると、内部的にはView←ViewModelに強い参照が発生している。なので、Viewがいらなくなったタイミングで破棄しても、内部的にはViewを参照し続けている輩が残ってるので、ガーベッジコレクションの対象とならず、メモリリークの原因となってしまう。

 

どんなとき起こりやすい?

イベントの購読者と発行者のライフサイクルが異なる(購読者のほうが短い)場合。

例えば、ボタンを押したらそのたびにダイアログを生成するけど、ViewModelはつかいまわすぜ、というような[Viewのライフサイクル] < [ViewModelのライフサイクル] の場合。ライフサイクルが一緒の場合は特に気にしなくてもいい。

 

どうすりゃいいの?
  • イベントはつけたらどっかで外す
  • WeakEventListenerを使う

など。

前者は、場合によっては開発者側でイベントの解除が明示的に書けない場合がある(らしい)。いちいち気にするのもめんどくさい。

そこで、後者。

強い参照でなく、弱い参照(WeakReference)の場合、参照が残っていてもガーベッジコレクションで回収してくれる。んなわけで、WeakEventListenerを使うと、特に購読者側で解放タイミングを気にしなくていい。(その代わり、若干特殊な実装が必要になる。)

 

一度仕組みを作ってしまえば、アーキテクチャレベルで対策ができるため、実装時に余計なことを気にすることがなくていい感じ。

 

実装時には、以下のようなページでおべんきょうさせていただきました。

(このページ見るよりはやいね。)

 

ugaya40.hateblo.jp

 

blog.okazuki.jp

 

 

以上

【ドラム教則本・DVDあれこれ】 [MR] “Mastering Rudiments" 石川 直 【CD付】

教則紹介シリーズ第2弾 

今日はこれです。

 

スネア・メソッド [MR] “Mastering Rudiments

スネア・メソッド [MR] “Mastering Rudiments" 石川 直 【CD付】

 

 

基礎練習を見直したいなーと思ったのと、youtubeかなんかで石川さんの動画を見てすげー、と思ったのが購入のきっかけ(だった気がする)。一通りの内容は実践しました。

 

この本の特長は、実践以外の記事が豊富なことだと思います。特に、第二章「考え方」に記載してある心構えや練習の取り組み方に関しては、ドラムに限らない普遍的な話としてとらえることもでき、自分の練習姿勢を見直す良い機会になります。著者の人柄が見て取れる...

 

もちろん実践の内容も充実していて、初学者にも基本を見直したい人にもお勧めできる内容かと思います。

 

この記事を書いてたらまた読み直したくなってきた...

【ドラム教則本・DVDあれこれ】デヴィッドガリバルディ フューチャーサウンド(CD付) ファンクドラム強化メソッド

ドラム教則本・DVDってどれ買ったらいいか迷うよね~。

ということで、自分が持っている教則本・DVDを紹介します。

 

今まで買ったものを数えてみると、本とDVDあわせて20冊(本)ありました。

【内訳】

2:達成率0%(まだ開いてない...)
4:達成率20%(中身に目を通して満足した)
5:達成率40%(継続中or途中で放置)
3:達成率60%(やりたいとこは一通りやった!)
4:達成率80%(一周した!)
2:達成率100%(習得した!)
 
はじめて数えて状況を整理してみたけど、やってないのが多い...
でも、それでいいんです。
例え途中で終わっても、何か演奏に役に立つことが一つでも得られたら、その本を買った価値はあると考えてます。(言い訳がましい、、、)
買ってみて、やりはじめてみて「なんか違うな、、、」ってなるのはよくあることなの
で、それを防ぐ一助になれば。
 
今日の本はこちら。
 
デヴィッドガリバルディ フューチャーサウンド(CD付) ファンクドラム強化メソッド

デヴィッドガリバルディ フューチャーサウンド(CD付) ファンクドラム強化メソッド

 

 

Tower of Tower のドラマー、David Garibaldi の教則本です。

絶賛継続中で、今は3~4割進んだところかな。

全体的に、「うへぇ・・・」となるようなエクササイズがいっぱいです。

 

今やってるのはパーミュテイション・スタディという章で、BDのパターンが小節ごとに16分音符一つ分だけずれていく、というフレーズをひたすら進めてるとこ。

否が応でも16分がしっかり体内で刻めてないと到底できないので、クリックをひたすら聞きながら徐々に徐々にテンポをあげていってます。

 

怠けてクリックをしっかり聞いて練習することから遠ざかっていた身には応える…

のですが、これをやり通せたら

  • 正確なリズム・強固なグルーブが身につく
  • フレーズのアイデア(の広げ方)が身につく
  • David Garibaldi に(数ミリくらい)近づく‼‼‼

のではないか、という希望をもって進めてます。

あとは、ルーディメンツやゴーストノートなど自分が避けてしまいがちだった内容を見つめるいい機会にもなるかと。

 

挫折せず一周できますように。