2010-04-14 17 views
5

içinde aşırı nesne ayırma göremiyorum Düşük bellek nedeniyle çökmesini bir iPad uygulaması var. Ancak, Instruments, ObjectAlloc kullanılarak ayrılan önemli miktarda bellek göstermez - uygulamanın ömrü boyunca 1MB'nin altında kalır. Sızıntılar, koşu sırasında sızan 1kB'den daha az gösterir. Bellek monitörü, aygıtlardaki boş belleği kullanımla önemli ölçüde düşmekte ve sonuçta bellek yetersiz olduğu noktaya düşmektedir. İşte Instruments ekran görüntüsü:Bellek tükendi ama Aletleri

Instruments screenshot http://www.freeimagehosting.net/uploads/0758372561.png

Tamamen stumped. Anlatabildiğim kadarıyla, bu temelde benim uygulamam söz konusu olduğunda, hiçbir zaman yaklaşık 750 kB'den fazla kullanmıyorum, ancak cihazın hala fiziksel belleğim tükeniyor olduğunu söylüyor ki bu da uygulamamın çökmesine/zorlamasına neden oluyor çıkış.

XCode ile bellek sorunlarını gidermek için yeni. Bunu yanlış mı ölçüyorum? Bu hafızanın nereye gittiğini görmenin başka bir yolu var mı?

+1

Bir Objective-C nesnesi olmayan herhangi bir belleği ayırıyor musunuz (örneğin, 'malloc kullanarak)? –

cevap

1

Sızıntı satırına bakarsanız, arka arkaya tüm lotta bir bellek sızıntısı olur. Ayrıldığınız veya sınıflarınızın referanslara sahip olduğu nesneleri serbest bıraktığınızdan emin olun.

+1

Hmm, belki yanlış okumuştum, ama bana sadece sızan bir kaç sızıntının (turuncu çubuk) bulunduğu bir an olduğu gibi görünüyor. Bir şey mi eksik? –

+1

Bu oldukça küçük sızıntılara benziyor. Muhtemelen serbest bırakılmamış belleği göstermek için "Oluşturuldu ve hala yaşıyor" istiyorsun. Uygulama ne yapıyor? Merak ediyorum ki, bir şekilde senin sürecine suçlanan bir bellek var mı? –