前提
・WPFアプリ
・Visual Studio
・C#
お聞きしたいこと
static 変数とメモリに関してお聞きしたいです。
現状、static で各ページのインスタンスを生成(シングルトンパターンでPageクラスを実装)しておき、GetInstance()
メソッドにて遷移先のPageクラスのインスタンスを取得し、NavigationService.Navigate()
の引数に渡して画面遷移をする、という方法をとっています。
・ページ数は12ページ程
・ページ1 → ページ2 → ページ1 → ページ5
といったような遷移も考えられます
(この際に再度ページ1のインスタンスを生成するより、1回だけインスタンス生成されればいいやん、と思いstatic でシングルトンパターンにしました。)
⬇︎(例)ログインページクラス
public partial class LoginPage : Page { private static LoginPage _instance = new LoginPage(); public static LoginPage GetInstance() { return _instance; } public LoginPage() { InitializeComponent(); } (省略) }
・アプリ使用中のメモリ使用量は120MBほどであり、staticな変数に常に値を追加していくような処理もなく、メモリリークはしないだろうと考えているので、このまま(各ページはstaticなシングルトンパターンで実装)で良いだろうと考えているのですが、この認識はあっていますでしょうか?
それともこのままだとメモリリークの可能性があったりするのでしょうか?
(メモリリークを気にしたのは以下のためです)
static な変数はGCの対象にならない(参考:メモリリーク例について、(対象になることもあるが、基本ならない感じの認識です))のでstatic で宣言しておくと、その分のメモリを食ってしまう、と思っています。
C#、WPF共に初めてでして、もしアドバイス等あればお聞きしたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/11 07:41