0

メモリ不足が原因でiPhoneアプリケーションがクラッシュします。クラッシュ後にlowmemoryというクラッシュログが保存されていることがわかります。ただし、コードにリークはありません。

メモリ使用量を減らす他の方法はありますか?ある時点でシミュレーターでアプリをプロファイリングすると、メモリ使用量(割り当て)が最大91 mbに達し、これがデバイス(iPhone 3GS)でアプリがクラッシュするポイントであると思われます。その時、私はたくさんの文字列置換を行っています(基本的に私はHTMLで約100個のタグを置換しています)。

4

2 に答える 2

0

Instrumentsツールを使用してみてください。XCode (cmd + I) を使用して Instruments ツールを起動することも、XCode を使用せずに (cmd + space => Instruments)、Instruments ツールを起動することもできます。

XCode で Instruments を起動する場合は、"Leaks" オプションを使用することをお勧めします。「Leaks」を押して、「Statistics」の代わりに「Call Tree」を選択します。私の経験では、次のチェックボックスをオンにするのが良いでしょう: Obj-C を非表示にする、再帰を平坦化する、欠落しているシンボルを非表示にする、システム ライブラリを非表示にする。ここでは、実行中にアピールされたラインがツールに表示されます。

もう 1 つの方法は、XCode を使用せずに Instruments を起動することです。ここで「Activity Monitor」を使用し、デバイスを選択してそのアクティビティを記録する必要があります。統計リストを取得するには、統計の 1 つをダブルクリックする必要があります。アプリの名前を見つけて、[実メモリ] 列を確認します。アプリを少し試してみて、メモリが増えていて割り当てが解除されていない場合は、実行した操作にどのクラスが使用されたかを確認し、クラスを確認する必要があります。

注: XCode を使用せずに Instruments を起動する場合は、アプリが XCode からデバッグ モードで起動されていないことを確認してください。XCode 4.0 にはバグがありました (後で修正されたかどうかはわかりません) が、Activity Monitor の [Real Memory] ​​列に正しい情報が表示されないことが偶然に起こりました。

注 2: メモリ管理のテストを行う場合は、常にデバイスで行う必要があります。いつも。

編集:プロジェクトのXCodeで「cmd + shift + B」ショートカットキーを試すこともできます。これは、メモリリークの可能性を示唆しています。時々便利ですが、ツールが常に正しいとは限りません:)

于 2012-09-06T13:52:06.747 に答える