問題タブ [heapshot]
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.
memory-management - このヒープショットはどういう意味ですか?
私は特定のプロセスのヒープショットを撮ってきました。すべてのショットでリークされたすべてのオブジェクトは、次の方法で発生します。
これが実際のヒープショットです。これらはすべてこれと同じように見えます。
いくつか質問があります:
- 次のステップは何ですか?この方法ではリークは見られませんが、なぜヒープショットでそれほど目立つようになっているのですか?
- の
[self resetArticleView]
隣には65%が少しありますが、その特定のメソッドは、リークされたオブジェクトのスタックトレースのいずれにも表示されません。その特定の65%の指定が何を意味するのか誤解していますか?リークされた割り当ての65%が含まれていることを意味する場合、そのメソッドがスタックトレースに含まれていないのはなぜですか?
ios - プログラムの実行中のメモリ クリープ、CGGlyphBitmapCreate (とりわけ)?
これは、昨日のより広範な質問に便乗しています。問題を特定するためにヒープショットを使用してきましたが、それらはすべて私がよく知らない呼び出し元にあります。私が自分で書いたメソッドは表示されませんが、CoreGraphics は狂ったようにメモリを消費しているようです。
今週アプリを提出する準備は万端でしたが、大きな問題が発生しました。私は多くの QA とリーク検出を行っており、ヒープショット/割り当てプロファイリングでプロセスを終了していました。残念ながら、これは計画通りにはいきませんでした。このプログラム自体は「漏れている」わけではありませんが、間違いなく上昇しています。
プログラムを説明する最良の方法は、数学のフラッシュカードです (最初のアプリで、コツを学ぶので、簡単にしたかったのです)。5 つのボタン、2 つの画像ビュー、2 つの UILabels があります。私は壁に頭をぶつけて、私のデザインに問題があるのではないかと考えています (短い答え: たぶん)、それよりもメモリ クリープが心配で、ほとんど確実にアプリ ストアにアクセスできなくなります。
つまり、プロセス: ビューには、ホーム ボタン (メイン メニューに戻るため)、チェックボックス (後で問題をマークするため)、UILabel の数学の問題、および [答えを得る] ボタンが表示されます。回答を得るを押すと、2 番目の UILabel に回答が表示され、さらに 2 つのボタン (Right と Wrong) が表示され、Get Answer ボタンのタイトルが「Get Problem」に変わります。Get Problem を押すと、新しい問題で最初にリセットされます。
私はヒープショットを使用して、どれだけのメモリが占有されているかを調べてきました.1回の繰り返しを行うたびに、10〜15KBの間で失われていることがわかりました(「答えを得る」を押してから「右」または"違う")。最悪の犯罪者は「CGGlyphBitmapCreate」と呼ばれるもので、正直なところ、それが実際に何であるかについてはほとんど知りません。
その他の注意事項: 「ホーム」ボタンは、IB で作成された .png を持つカスタム ボタンです。チェックボックスの状態に応じて(.hiddenを介して)切り替える2つの.pngの上にテキストではない「マーク付き」ボタン(一方を非表示にしてからもう一方を表示、またはその逆)。
コール スタック:
前もって感謝します。
ios - MKMapView は MKUserLocation のメモリの割り当てを解除していません
VC1 が VC2 をナビゲーション スタックにプッシュするナビゲーション コントローラーがあります。VC2 にはタブ ベースのビューの MKMapView があり、ユーザーの場所がオンになっています。ヒープショット分析ツールを使用して計測器で繰り返し割り当てを確認すると、VC1 に戻ったときに割り当てが解除されていない MKUserLocation オブジェクトが繰り返し見つかります。
すべての注釈を削除し、割り当て解除時にユーザーの場所も無効にしました。このヒープの増加の理由は何でしょうか?
VC2 をナビゲーション スタックにプッシュする VC1 コード:
VC2 の割り当て解除コード:
}
また、ユーザーの場所をオンにしないと、ヒープの増加はありません。
更新:シミュレーターと iPad 3G+WiFi でこれをテストしましたが、どちらの場合もこのヒープの増加が見られました。
ios - iOS の割り当て - ヒープショットの永続的なカウントが常に 0 とは限らない
iOS アプリのプロファイリング中に、スタックからビューをプッシュおよびポップし、ヒープショットを取得する単純なタスクを複数回実行します。毎回同じコードが実行され、プッシュされたビューには、ビューがポップされるとすぐに削除されるいくつかの画像が含まれています。
ヒープショットのほぼ半分で永続的なカウントが 0 であるため、放棄されたメモリがないと想定しても安全でしょうか?
永続的なカウントが 0 より大きい行は、内部キャッシュが原因である可能性があると聞いたことがあります。
Xcode 4.2.1 を使用しており、アプリは ARC を使用しています。
編集:
Kendall Helmstetter Gelner のおかげで、この問題をさらにデバッグすることができました。これをデバッグするためにシミュレーターを使用するべきではなかったでしょう。デバイスで実行したところ、リリースされていないオブジェクトが 1 つあるように見えます。
拡張された詳細ビューを調べた後、問題の原因をほぼ見つけたと思います。
ios - 割り当て解除時にヒープの増加を引き起こすUIPickerview
iOSは初めてで、メモリ管理と計測器を理解するために最善を尽くしています。
私の問題は、ピッカービューを追加/削除すると、奇妙なメモリ損失が発生することです。2つのボタンで構成される非常に基本的な例を設定しました。1つはピッカーを作成して表示します。もう1つは、メインビューから削除します。
アナライザーはクリーンに起動し、Instrumentsは明らかなリークを報告しません。しかし、この「表示と非表示」操作を繰り返すと、ヒープメモリは増え続けます。
これがコードです。私はXCode4.5を使用しており、ARCが有効になっています。
私のViewController.h:
ViewController.m:
InstrumentsショーのオブジェクトリストはUIPickerView
、反復ごとにうまく行き来するため、正しく割り当てが解除されているように見えます。まあ、完全ではありません。これは、ヒープショットからのサンプルです。
(申し訳ありませんが、まだ画像を投稿することはできません)
さて、私が実際にピッカービューを正しく解放している場合(ビューから削除してその参照をnilに設定している場合)、それらの割り当てはどこから来ますか?
ちなみに、スタックトレース上のものは、それUIPickerTableViewTitledCell
を含むピッカービューのリークで同様の問題を抱えている人がいるため、疑わしいと思います(これとこれを参照)が、私は自分の頭や尾を作ることができませんこれでやるべきだ。それらが実際に私の問題に関連しているかどうかはわかりませんが、運が良ければ正しい方向を向いている可能性があります。
任意のヒント?
ios - ヒープショット分析を持っていない
アプリがメモリを放棄した場所と、heap shot
.
ただし、マーク生成ボタンしかありません。ヒープ ショットボタンはどこにありますか? それとも変わっただけ。
申し訳ありませんが、私はiOSが初めてです。