2013年11月6日水曜日

.net上の大きな罠

これは致命的だと思ったのが、ガベージコレクション機能である。
最近になって大きなアプリケーションを作る機会があって実際に使ってみると、
2,3秒フリーズする現象が出たので、調べてみるとガベージコレクションが影響しているようだ。

このガベージコレクション機能というのは、どこにも参照されなくなったデータを
自動的に削除してくれる本来便利な機能なのだが、好きなタイミングで破棄する事が出来ない。

つまり、変数をNewするたびにメモリー使用量が増えていくのだが、ピンポイントに開放するという事は不可能。

では対処するにはどうしたらよいか。
・プログラムのデザインパターンがどうの言われているやり方だとオブジェクトがどんどん増えていくので、生成した領域を使いまわすプログラム構造を設計する。
・クラス内変数は全てprivateにしておき、外部公開する時はプロパティ経由で行うこと。
 変数を極力Privateにすることでメモリ破棄が効率よく行われる。
・よく使うものはNewせずStaticで定義してしまう。
・ピンポイントな配列はなるべく避けてオブジェクト単位にまとめて使う。(オブジェクト指向を考慮して)

昔できた事が今ではできないという事を理解したから、
ガベージコレクション機能に頼らず自分で工夫しようと思ったこのごろ。




0 件のコメント:

Androider