WKWebViewはXcodeのバグでメモリ使用量が正しく表示されない問題があるのが原因らしいです
UIWebViewとWKWebView、皆さんどちらを使ってますか?
UIWebViewの方が色々弄れたり、情報も多いですよね。
今回はメモリ消費の違いを見てみました。
UIWebViewの方
for (int i=0; i<5; i++) {
UIWebView*v = [[UIWebView alloc] initWithFrame:CGRectMake(0, (1136/2)/5*i, 320, (1136/2)/5)];
[v loadRequest:[[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://blog.esuteru.com/archives/8176460.html"]]];
[self.view addSubview:v];
}
WKWebViewの方
for (int i=0; i<5; i++) {
WKWebView*v = [[WKWebView alloc] initWithFrame:CGRectMake(0, (1136/2)/5*i, 320, (1136/2)/5)];
[v loadRequest:[[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://blog.esuteru.com/archives/8176460.html"]]];
[self.view addSubview:v];
}
上記のコードで比較しました。
WebViewのインスタンスを5つ生成し、縦に並べます。
はちま起稿のサイト(ある程度メモリ消費が見込めそうなサイト)を読み込み、Xcodeでメモリ消費を見てみます。
UIWebViewの方。
大体500MBくらいでした。
!?
WKWebViewの方。
30MBくらいでした。
検証の方法がちょっとアレですが、なんか露骨な結果が出ました。
WKWebViewの方は裏でキャッシュとかを共通化してるのかな…?
因みに、最初の表示まではWKWebViewの方が遅かったです。
UIWebViewは表示された後じわじわ増えていく感じでした。
スクロールしたり別のページ読ませたりしてないのでちょっと眉唾な結果ですが、少なくともこの条件下では最適化されたパフォーマンスになってるみたいです。