9

私たちのアプリは、メモリ不足またはメモリ破損状態のように見えるために、フィールドで時折クラッシュが発生しています(BugSenseを介して発見されました)。そのため、それらを追跡するために、次のことを有効にしました。

  • Malloc Scribble
  • Malloc Guard Edges
  • ガードマロック
  • Objective-Cゾンビオブジェクト
  • Mallocスタックロギング
  • 例外をログに記録します。

シミュレーターでアプリを少し操作した後(30秒未満)、次のメッセージが表示されます。

GuardMalloc[TrafficDemoEmp-2430]: allocate_pages(): virtual memory exhaused!
GuardMalloc[TrafficDemoEmp-2430]: expandUniquingTable(): VMCopyFailed
GuardMalloc[TrafficDemoEmp-2430]: allocate_pages(): virtual memory exhaused!
GuardMalloc[TrafficDemoEmp-2430]: expandUniquingTable(): VMCopyFailed

Guard Mallocを無効にすると、アプリは正常に動作しますが、有効にすると、これらのメッセージでアプリがクラッシュします。Leaks and Allocationsインスツルメントでプロファイリングすると、リークは検出されず、すべてのメモリのLiveBytes値は30MBから80MBの範囲になります(その時点で何をしているかによって異なります)。確かに、それはアプリにとってあまり多くのメモリではありません。

ただし、メッセージはアプリがメモリを使いすぎていることを示していますが、仮想メモリの枯渇の原因がわかりません。Xcodeで利用できる他のツールやデバッガー設定はありますか?

ありがとう、
デビッド

4

1 に答える 1

9

User1118321は正しかった。NSZombiesがこの問題の原因でした。

回答を受け入れることができるように、この回答を提出してください。

于 2013-01-09T04:41:03.300 に答える