1

タイトルが示すように、私はiPad 2で動作するアプリを持っていますが、iPad 3でクラッシュします。それを実行すると、コンソールにメモリ不足の警告メッセージが表示されます。クラッシュが発生したとき、私はそれを象徴しますが、それが示すように、私がコードに関連付けることができるものは実際には何もありません

   process name, UUID, rpages, recent_max, [reason] (state)

これらの列ヘッダーの下には16進数のものがあり、プロジェクト内のメソッド呼び出しや行は何も表示されません。

何か案は?より良いクラッシュログを可能にするいくつかのフラグがコードにありませんか?

ありがとう。

4

2 に答える 2

2

メモリ不足の警告が表示され、問題を解決するのに十分なメモリを解放できない場合、アプリはほぼ確実にクラッシュします。問題は、それがどのように、またはなぜ墜落したかの詳細が明らかになる可能性があるとは思わないということです. その時点で、二次症状を評価しています。そもそもメモリ不足の警告が表示された理由を突き止めて、その問題を解決する必要があります。

Daniel が言ったように、 Technical Note 2151を見ることができますが、次のように書かれています。

メモリ不足のクラッシュが発生した場合は、終了時にコードのどの部分が実行されていたかを気にするのではなく、メモリ使用パターンとメモリ不足の警告に対する応答を調査する必要があります。Memory Allocations Helpには、Leaks Instrument を使用してメモリ リークを発見する方法、および Allocations Instrument の Mark Heap 機能を使用して放棄されたメモリを回避する方法の詳細な手順がリストされています。メモリ使用パフォーマンス ガイドラインでは、メモリ不足の通知に対応する適切な方法と、メモリを効果的に使用するための多くのヒントについて説明しています。また、WWDC 2010 セッションのAdvanced Memory Analysis with Instrumentsを確認することもお勧めします。

だから、いくつかの考え:

  1. 漏れを探しましたか?Finding Leaksの記事では、機器を使用して漏れを見つける方法について説明しています。

  2. ゾンビをオンにした場合、オフにしましたか? Zombies は優れた診断ツールですが、メモリを消費するだけです。

  3. コードを静的アナライザー ( shift+ command+Bまたは [製品] メニューの [分析] を選択) で実行しましたか? 特に ARC 以外のコードを使用している場合、多くのメモリの問題が見つかる可能性があります。

  4. Allocations楽器のツールで減少を相殺することなく、説明のつかない増加に対する割り当てを調べましたか。それを使用して、プログラムを実行し、グラフでメモリの消費を見て、対応する減少によって相殺されていない増加があるかどうかを確認できます。その場合は、グラフでそれらの増加を強調表示します。

    たとえば、割り当てツールを実行しているときに、オプション キーを押したままマウスでクリック アンド ドラッグして、タイムラインの一部を強調表示し、検査対象を特定します。おそらく、割り当ての急増の 1 つに注目したいと思うでしょう。たとえば、割り当てにバンプが見つかり、それを強調表示しました (これは で巨大な配列を作成するばかばかしいほど単純な例viewDidLoadですが、アイデアが得られることを願っています)。

    割り当て

    下部パネルにコール ツリーを表示すると便利であることに注意してください。「システム ライブラリを非表示」を選択して、コードに集中する (および「コール ツリーを反転」も) と便利です。また、Instruments でメソッド名をダブルクリックすると (私の例では、viewDidLoad になります)、Instruments は割り当てを行っているコードを表示します。

    コードを表示

于 2013-03-04T22:51:37.900 に答える
1

メモリ不足の警告は、標準のクラッシュとは異なる種類のログを生成します。この記事の「メモリ不足レポートについて」セクションを参照して、アプリケーションで何が起こったのか、Instruments を使用してアプリケーションをデバッグする方法を理解してください: http://developer.apple.com/library/ios/#technotes/tn2151/ _index.html

于 2013-03-04T22:17:37.153 に答える