質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

5303閲覧

XcodeのInstrumentsの結果の意味がわかりません

Beginner22

総合スコア12

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/07/10 11:33

編集2019/07/12 09:32

前提・実現したいこと

独学でSwiftを勉強中です。
ネットなどの情報を参考にしながら、CIFilterで画像処理のソフトを作って見ました。
A画像→B画像(画像処理)→A画像というものですが、Debug Memory GraphではMemory leak は
見つからなかったのですが、 実機テストInstrumentsで見ると、Segueなど操作とは関係なく、定期的にleak発生が見られます。しかし、leakが発生しているのに、Memoryは上昇していません。これは何故に?。
Xcodeは10.1です。Xcodeにお詳しい諸先輩方、ご教授を宜しくお願いいたします。

発生している問題・エラーメッセージ

イメージ説明

該当のソースコード

ソースコード

試したこと

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2019/07/11 02:51

「Memoryは上昇していません」というのは何で判断しましたか? 上のグラフを見て判断したのであれば、リークサイズが小さいのでグラフでは違いが分からないだけかもしれません。
Beginner22

2019/07/11 05:24

返信、ありがとうございます。 Allocationsのグラフが右肩上がりにならないので、そう判断しました。 なにぶん初心者のため、Instrumentsの見方が、よく分からないのもありますが…。
fuzzball

2019/07/11 05:30

そのスクショでは2回しか実行してませんよね。 その画像処理を何十回、何百回と繰り返せば右肩上がりになると思いますよ。
Beginner22

2019/07/11 05:47

実際には、50回ほど繰り返すテストを何度もしてみました。 Leakの数も、テストの度に変わります。でもグラフは右肩上がりになりませんでした。 「何が何やら」状態です。 お忙しい中、何度も返信、本当にありがとうございました。
fuzzball

2019/07/11 06:17

スクショには一部しか見えていないので具体的なことは分かりませんが、数KBのリークであれば、100〜200回繰り返して1MB程度のリークです。1MBだとその小さなグラフでは1ドットにすらならないかも知れません。グラフの高さを高くするか、メモリ使用量だけであればXcodeのDebug navigatorでも確認できます。
Beginner22

2019/07/11 08:29

何度もありがとうございます。leakの原因は、 これから更に勉強しながら、探していきたいと思います。
fuzzball

2019/07/11 08:55

「何が何やら」を解決するためにコメントしているのですが、なぜ試して結果を教えてくれないのでしょうか?
Beginner22

2019/07/11 11:59

申し訳ありません。試した「結果自体」が理解できないからです。 まだまだ、勉強不足です。
fuzzball

2019/07/11 15:35

あなたが理解出来なくても結果を教えてもらえればこちらで判断します。 試した結果のスクショを貼って下さい。
Beginner22

2019/07/12 09:33

返信遅れてすいません。hayabusabusash氏からご指導いただいて出たスクショの結果の一部です。
guest

回答1

0

画像を見る限りではCoreImageやCoreVideo関連の関数などでメモリリークが発生しているかもしれません。
ただ、詳しい原因の特定は今の情報だけでは難しいので
以下を参考にしてメモリリークしている関数などを探してみてはどうでしょか?

まずLeaksの表示をCall Treeに切り替えます。

CallTreeに切り替え

システムの処理以外を表示するためにHide System Librariesにチェックを入れます。

イメージ説明

これで残ったものが自分で追加した処理や外部ライブラリの処理になるので、
そこから詳しく探すことができると思います。

投稿2019/07/11 02:29

hayabusabusash

総合スコア767

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Beginner22

2019/07/11 05:34

回答、ありがとうございます。 ご指導の通り、Call Treeを設定しましたが、 Bytes Used #Leaks Symbol Name とだけ表示がされました。 これが何を意味しているのかは、自分ではわかりませんでした。
hayabusabusash

2019/07/11 05:45

なるほど... ということはメモリリークしているほとんどが UIKitやCoreImage関連の関数ということですね。 それならHide System Librariesのチェックを外してしまってください。 おそらくリークしている関数が並んでいると思いますが、 関数の左に三角のようなボタンがあると思うので、そこからその関数の呼び出し元を確認できます。 呼び出し元を辿っていけばリークしている個所を特定できるはずです。
Beginner22

2019/07/11 05:52

ありがとうございます。これから、そのご指示をやって見ます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問