問題タブ [instruments]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - UIImageView に触れると、なぜこの奇妙なメモリ リークが発生するのですか?
それは本当に奇妙です。-touchesEnded:、-touchesMoved、および -touchesBegan: メソッドを実装する空白の UIImageView サブクラスがあります。これらのメソッドの実装は空です。彼らはただ何もしません。ただし、「Leaks」を使用して Instruments を実行し、UIImageView に触れて、画面に触れたまま UIImageView の外に指を移動すると、Instruments からメモリ リークの警告が表示されます。
私のデモアプリでは、それを行うときにオブジェクトの割り当ては発生しません。メソッドは空です。Instruments で読んだものはすべて、Foundation と Run Loop に関するものです。クラスを 2 回チェックし、オブジェクトの割り当てを削除しました。画像を表示するだけのスケルトンですが、画面に触れたり指を動かしたりしても、その画像は変化しません。それは意味がありません。
他の誰かがこのような問題に遭遇しましたか?
更新:もう少しテストして、5 本の指ですばやくタップすると、画面上の任意の場所でメモリ リークが発生することがわかりました。Instruments.app から得られるものはすべて、いくつかの実行ループとイベント ループに関するものです。デバイスがタッチを十分に速く処理できず、割り当てられたオブジェクトを解放するときにスタックするようです。試してみて、同じ問題が見られる場合は、ここに報告してください。
更新:いくつかの Apple サンプル アプリもテストしました。通常のユーザーが行うように、画面上で 3 ~ 5 本の指でハックすると (はい、そうします!)、Instrument はイベントと実行ループに関するメモリ リークを表示します。確かに、フレームワークや楽器には大きなものがあります。iPhone OS 2.2.1 でテスト済み。
iphone - 何千もの新しい 0 サイズのオブジェクトが毎秒正味合計に追加されていますが、心配する必要がありますか?
プロジェクトからリークを取り除き終えたばかりですが、カテゴリ「GeneralBlock-0」にはまだ何千ものオブジェクトがあります。正味の割り当ての数は屋根を通り抜けています (私が入力すると 100 万に近づいています) が、どれもリークではなく、サイズが 0 バイトを超えるものもありません。
更新と編集:
QuartzCore は、問題のあるすべてのオブジェクトに対して責任があります。
責任のある呼び出し元は次のとおりです (ゲーム ループの反復ごとの実行順:
デバイスで実行すると、48 バイト サイズのオブジェクトが GeneralBlock-64、128、256 などの下に割り当てられ、上記と同じプロパティが割り当てられます。これは明らかに大幅な速度低下を引き起こすため、容認できません。これは、問題が追跡されている私のプロジェクトのコードです。
CGPoint は型であり、コード ブロックの最後で割り当てが解除されるという印象を受けました。なぜそれが私の記憶を独占しているのですか?結局のところ、興味のある人のためにinstrumentsに保存したトレースファイルをアップロードしますが、すべてをカバーしたと確信しています.
iphone - Instruments でのメモリ割り当ての確認
リーク ツールを使用してアプリのリークをクリアしましたが、ビューを切り替えると、objectalloc ツールによって割り当てられたオブジェクトの数とフットプリントが急増していることにまだ気付きます。
私は特に次の数が多いのを見ています:
GeneralBlock-16 は主に Foundation が発信者 NSLogv を担当
と
主に QuartzCore が担当する GeneralBlock-0
これをさらにデバッグするために何ができるかについてのヒントはありますか?
ありがとう!
objective-c - ここでメモリリークはどこにありますか?
Instruments は、このコードにメモリ リークがあることを教えてくれますが、それを見つけることができないようです....何か助けはありますか? 申し訳ありませんまたは初心者の質問。
iphone - UIImageViewに新しい画像をロードすると、以前の画像のメモリは解放されません
私のアプリには3つのビューがありますUIImageViews
。リソースファイルとして約150の画像があり、それぞれの.jpgは約24kです。アプリはすべての画像を表示しますが、一度に3つだけ表示されます。
しかし、ボタンをクリックしてさらに3つの画像をにロードするたびにUIImageViews
、Instrumentsの[Overall Bytes]列が約700K増加し、最終的にメモリ不足の警告が表示されてアプリがクラッシュします。どういうわけか、3つの画像のロードごとに使用するメモリが解放されていません。
私はグーグルでこれを行うために知っているあらゆる方法を試しましたが、成功せず、助けが必要です。
私はこれを試しました:(このコードは、さらに3つの画像をロードするアクションの一部です。3つのImageViewは、、、ですimgShownLeft
。imgShownMiddle
これらimgShownRight
はインスタンス変数です。最初にcurrentImage
3つすべてを入力しUIImageViews
、次にpreviousImage
左側の画像を入力する必要があります。nextImage
正しいもの:
それから私はこれを試しました:代わりに:
私が使用した:
同じ方法で
割り当てられimg
、その後にUIImageViews
[img release];
それから私は試しました:
それから私は試しました:
ただし、いずれの場合も、このアクションを実行するたびにメモリ要件が増加しました。
150枚の画像をメモリに保持しなくても、一度に3枚の画像をロードしておくことができることを私は知っています!私は何が間違っているのですか?
洞察をありがとう。/SD
performance - 「Leaks」XCodeパフォーマンスツールからの出力を解釈する方法は?
XCode の「Leaks」パフォーマンス ツールからの出力がわかりません。この出力をどのように解釈できますか?
iphone - Instruments にスタックトレースが表示されない
Instruments を使用して、iPhone アプリケーションのメモリ リークを見つけています。アプリケーションにいくつかのリークが見られましたが、拡張詳細ビューにスタックトレースが表示されていません。「このブロックで使用できるスタック トレースはありません」とだけ表示されます。
この動作の原因となったいくつかの設定を見逃していると確信しています。どんな助けでも大歓迎です!
ありがとう水差し