自分のメモリーリークじゃない?、Deprecatedなメソッドの変更点 [プログラミング]
メールチェッカーなソフトの改造を行なっていますが、元からメモリーリークしているとか情報があったので、ぼちぼち直さなあかんなぁとは思っていました。
Gmail対応してから、それなりにメモリ消費量が増えたので、もしかしたら更にメモリリークを増やしたのかな、と思っていた。でも、ちょっと違う模様。というのも、立ち上げたときから以前のメールデータを持っているときは、すごくメモリを食うから。POP3サーバの中身をダウンロードして消した後にチェックさせると、空になった状態になるので、11MBくらいに戻るし、それは元ネタでも同じだ。
にしても、すごいSo-net Blogのレスポンス悪いなぁ。他のサイトはさくさくだし、いつも重病を抱えているように見えちゃうんだが。PSNをはじめとする一連のSony攻撃の一部でない事を願う。
もしかしたら、Gmail対応でOpenSSLのライブラリを使っているので、もしかしたらそれが悪さをしているのかもと思っていたが、それはそれほど影響していないようだ。ただずっと使っていると空になっても20MB弱に増えたりはしていたので、全くメモリーリークしていないとは言えない。かなり多くの情報を扱っているので、releaseしていないオブジェクトもあるはずで、それを見つけ出すのってのもかなり骨だ。でも、いつかやらないとなぁとは思っている。
ただMacのCocoaってそれなりにメモリを潤沢に使う傾向がある気がする。FirefoxとかはWindowsでもかなりメモリを消費するのだが、Macのほどではない。実装の違いはあるとは思うけど、どうにもCocoa的に問題があるんじゃないかという気はする。まぁ何にしても少しでもプログラムを堅く枯れさせるのは良い事なので、少しはメモリーリークは解消したいと思う。
mailpeeper-tlsを作った時に、やたらdeprecatedな関数、というかメソッド(だったっけ?)が出てきて簡単に取り除けるものはなるべく取り除いてきた。簡単なものは引数を注意して置換する程度で良いのだけど、置換だけじゃ明らかに動作に支障があるものについては、動作を不安定にするのもなんなので放置していた。
どういう風に変更したかなぁ、と探してまとめておこうかなと思った。
もっとたくさんあった気がするんだけど、MailPeeper_Menuの変更途中の状態のソースがなかったので、自分が手を入れてない、本当の元ネタからdiffする気にもなれなかった。多分、deprecatedのところは直してないと思うから、違ったところはこれだけなのかもね。
自分が使わない機能は、あえて手を入れません。他の人も使ってなかったら無駄だと思えるし、そもそもメールを削除するような作業とか自分のアドレスでしたくないしね。別途フリーメールとか使えば良いのだけれど、複数アカウント取ってとかの一連の作業を考えるとしんどい。なのであえてスルー。
Gmail対応してから、それなりにメモリ消費量が増えたので、もしかしたら更にメモリリークを増やしたのかな、と思っていた。でも、ちょっと違う模様。というのも、立ち上げたときから以前のメールデータを持っているときは、すごくメモリを食うから。POP3サーバの中身をダウンロードして消した後にチェックさせると、空になった状態になるので、11MBくらいに戻るし、それは元ネタでも同じだ。
にしても、すごいSo-net Blogのレスポンス悪いなぁ。他のサイトはさくさくだし、いつも重病を抱えているように見えちゃうんだが。PSNをはじめとする一連のSony攻撃の一部でない事を願う。
もしかしたら、Gmail対応でOpenSSLのライブラリを使っているので、もしかしたらそれが悪さをしているのかもと思っていたが、それはそれほど影響していないようだ。ただずっと使っていると空になっても20MB弱に増えたりはしていたので、全くメモリーリークしていないとは言えない。かなり多くの情報を扱っているので、releaseしていないオブジェクトもあるはずで、それを見つけ出すのってのもかなり骨だ。でも、いつかやらないとなぁとは思っている。
ただMacのCocoaってそれなりにメモリを潤沢に使う傾向がある気がする。FirefoxとかはWindowsでもかなりメモリを消費するのだが、Macのほどではない。実装の違いはあるとは思うけど、どうにもCocoa的に問題があるんじゃないかという気はする。まぁ何にしても少しでもプログラムを堅く枯れさせるのは良い事なので、少しはメモリーリークは解消したいと思う。
mailpeeper-tlsを作った時に、やたらdeprecatedな関数、というかメソッド(だったっけ?)が出てきて簡単に取り除けるものはなるべく取り除いてきた。簡単なものは引数を注意して置換する程度で良いのだけど、置換だけじゃ明らかに動作に支障があるものについては、動作を不安定にするのもなんなので放置していた。
どういう風に変更したかなぁ、と探してまとめておこうかなと思った。
deprecatedなメソッド | 変更したメソッド | 変更したメソッド以外の変更点 |
---|---|---|
TableView# selectRow: byExtendingSelection: | selectColumnIndexes: byExtendingSelection: | 引数もそのままで変えられた。 |
NSString# stringWithCString: length: | stringWithCString: encoding: | encodingにNSASCIIStringEncodingを指定 |
TableView# selectedRowEnumerator: | selectedRowIndexes: | 返り値をNSIndexSetに変わるので、NSEnumerator# nextObjectを、NSIndex# firstIndexと、NSIndex# indexGreaterThanIndexで代用。 |
もっとたくさんあった気がするんだけど、MailPeeper_Menuの変更途中の状態のソースがなかったので、自分が手を入れてない、本当の元ネタからdiffする気にもなれなかった。多分、deprecatedのところは直してないと思うから、違ったところはこれだけなのかもね。
自分が使わない機能は、あえて手を入れません。他の人も使ってなかったら無駄だと思えるし、そもそもメールを削除するような作業とか自分のアドレスでしたくないしね。別途フリーメールとか使えば良いのだけれど、複数アカウント取ってとかの一連の作業を考えるとしんどい。なのであえてスルー。
タグ:freesoft
コメント 0