6

Alet Aletini (Sızıntı) çalıştırıyorum ve QuartzCore kitaplığındaki bellek sızıntılarını alıyorum ve kodun tam olarak nerede olduğunu bilmiyorum. Genellikle, sızıntının meydana geldiği çizgiyi noktalandırabilirim, ancak alet aleti bu tür bilgileri görüntülemek için bana herhangi bir yer vermiyor.iPhone/Objective-C - QuartzCore kütüphanesinde bellek sızıntıları

Böyle bir sızıntı teşhis etmek açısından bakabileceğim başka şeyler neler olurdu?

enter image description here

cevap

3

İlk

enter image description here, cihazda bu çalıştırmayı deneyin. Bazen simülatör, cihazda mevcut olmayan sızıntıları rapor edecektir. İkinci olarak, yığın izlemeyi (sağ kenar çubuğu) açın ve bu aramayı tetiklemek için hangi kodların daha üstte yer alabildiğini görün, sonra o kodun neden sızdığını düşünebilirsiniz.

Bir kez daha tavsiye. Kaçaklarla oynamak yerine, ObjectAlloc'a geçin ve Heapshot özelliğini kullanın - kaçak nerede olduğunu biliyorsanız, bir temel bellek ölçümü yapmak için heapshot'ı kullanın ve bundan sonra "heapshot" düğmesine her bastığınızda Belirlediğiniz başlangıç ​​çizgisine karşı bir çeşit "diff" hafızaya bakın. Aşırı tutulan problemleri çözmek ayrıca sızıntılarınızı da düzeltebilir.

+0

Aygıtta sızıntı gerçekleşiyor. Önerinizi deneyecek ve yığın izine bakacağım. – fuzz

+0

Tamam, yığın yığınına bakmama bile izin vermiyor ... – fuzz

+1

ObjectAlloc cihazını ekleyin. Sızıntılarla birlikte gelen mevcut olanı silmek zorunda kalabilirsiniz, eğer "kayıt referans sayımı" olarak işaretlenmemişse (ayarları görüntülemek için cihazdaki küçük (i) düğmesine tıklayın). Tekrar kaydedin ve sızıntı kontrol süresini iki saniye gibi bir değere ayarlayın (varsayılan değer 10'dur). Ardından sızıntının kaydedildiği zamana kadar hangi tahsislerin yapıldığını görün ... ayrıca sızıntı için hafıza adresinin yanındaki oku takip etmeyi deneyin ve orada bir yığın izi olup olmadığını görün. –

2

Aynı anda yalnızca 16 bayt sızdırıyorsanız, uygulamanızda gerçekten sorun olmayacaktır. Ve sistemde sızıntı meydana gelirse, muhtemelen senin hatan değil.

+0

Bu her zaman rahatlatıcı sanırım. Her zaman aynı işlevsellikte ortaya çıkıyor gibi görünüyor, bu yüzden tüm görüşüme debug edebilir ve kullandığım QuartzCore kodunu görebiliyorum ... – fuzz