web-dev-qa-db-ja.com

Swiftメモリの管理

この質問は整理され、重要な情報は以下の回答に移動しました。


メモリ管理について質問があります。

写真編集アプリを作成しています。そのため、メモリ使用量を低く抑えることが重要です。また、特定のことを行うときに大きなメモリリークが発生しないため、コードを投稿しません。起こるすべてのことで、KB/MBを数個失います。そして、数万行のコードを超えてキロバイトを見つけるのは面白くない;)

私のアプリはコアデータ、多くのcifilterのもの、場所、および基本を使用します。

私の最初のビューは、5MBのメモリを消費する単なるテーブルビューです。次に、写真を撮り、フィルターを適用します。これはコアデータに保存され、最初のビューに戻ります。

その最初のビューを駆動するために必要なデータを除いて、メモリ内のすべてを完全に取り除くことは可能ですか? (それは非常に節約し、素晴らしい5MB)

または、すべてをnilに設定しても、常に何かが残されますか?


ボーナス質問:UIImageJPEGRepresentationUIImagePNGRepresentationの間にファイルサイズ/ CPU負荷に違いがありますか? JPEG方式で圧縮品質を設定できることを知っています(cpu/gpuでもっと難しいですか?)。

可能な限りあらゆる手段でメモリの負荷を軽減しようとしています。


更新:

質問は曖昧すぎるかもしれないと私に指摘されました。

ある時点で発生していた問題は次のとおりでした。

  • ある時点で、ピークメモリ使用量が高すぎる
  • 2番目のViewControllerに移動して戻ると、リークが発生します
  • 画像を編集すると、メモリリークが発生します。
  • 4〜5個を超える画像にフィルタを適用すると、メモリ不足のためクラッシュが発生し、この時点でメモリリークは発生しませんでした。 (楽器で検証済み)

P.sこれはすべてシミュレーターではなく、iPhone 4sでテストされました。

このサイトの雰囲気を少し明るくするミームがありました。

25
R Menke

enter image description here

xcodeの右上隅にあるアプリ名をクリックします。

enter image description here

表示されるメニューの[スキームの編集]をクリックします。

enter image description here

左側で[実行]が選択されていることを確認してから、ウィンドウ上部の診断タブをクリックします。

「メモリ管理」ヘッダーの下で、「Guard Mallocを有効にする」をチェックします

「ロギング」ヘッダーの下にある「分散オブジェクト」と「mallocスタック」を確認することもできます。

ガードmalloc、ガードエッジ、および落書きの詳細については、 here を参照してください。



お役に立てれば!

6
MoralCode