2015-09-28 20 views
6

iOS 9.0 SDK ile XCode 7.0 kullanıyorum SDK & ARC, iPhone 5S'de iOS 9 ile yapılan tüm profiller/testler EDIT: tüm ekran görüntüleri için tek bir koşuydu: xcode'dan düz bir hata ayıklama çalıştırdım ve daha sonra Aletleri manuel olarak ekleyiniz. Bu yüzden ekran görüntüleri tamamen aynı tek test çalışmasından. Bu bellek büyümesi (xcode görüntüsü başına)% 100 tekrarlanabilir.Neden XCode & aletleri bellek kullanımı arasındaki büyük fark, ve tamam mı?

Uygulamam ZIP dosyalarını indirir, paketlerinden çıkarır ve bunları kamera rulosuna ekler. Ben xcode ben bellek kullanımı Ayıklama bitene kadar hiç bitmeyen, hızlı çekim, bkz (CGContextRelease eksik yani.) Yanı sıra Ayıklama sırasında vb

@autoreleasepool kullanarak profil ve bellek sızıntılarını yakalamak için emin var, ve Bunu açıklayamam çünkü Aletleri'nde tutulduğunu görebileceğim hiçbir nesne yok. Bellek asla serbest bırakılmaz (xcode'un hafıza görünümünde). Test çalışmamın sonunda, unzipping sırasında hafıza uyarısı olmadan 236MB kullanıldığını görüyorum. Enstrümanların tahsis aracını kullanırsam 50.2MB yığın ve anonim VM kullanırım. Bu büyük bir fark! Epeyce animasyonlu UIImageViews çünkü ilk işim [UIImage imageNamed: sorumlu olduğunu varsayalım oldu

(önbelleğe alma vb), bu yüzden benim kodundan imageNamed tüm kaldırma ve yerine imageWithContentsOfFile kullanarak zaman geçirdi. Bu hiç yardımcı olmadı. UnZiplenilen görüntüleri, bu gibi iOS 8 Fotoğraf çerçevesiyle kamera rulosuna ekliyorum: [PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL:[NSURL fileURLWithPath:filePath]]

Enstrümanlar ve web makaleleri aracılığıyla önemli ölçüde zaman harcadım ama boşuna harcadım. Bu sorulara cevap veren var mı?

  1. Xcode bellek kullanımı & Aletler arasındaki uyuşmazlık neden bu normaldir?
  2. Bu sayıların böyle bir uygulamayı yayınlamak için çok yüksek olduğunu ve uygulama mağazasına yüklemeden önce bunu iyileştirmem gerektiğini düşünüyorum.
  3. Aşağıdaki ekran görüntülerine bakarak, problem (ler) i aramaya başlayabileceğim herhangi bir öneride bulunabilir misiniz?

Yardımlarınız için şimdiden çok teşekkür ederiz. Tabii ben ... ben nereden başlayacağınızı emin değilim,

XCODE BELLEK KULLANIMI 236 MB xcode mem usage

ARAÇLARIN instruments vm summary

instruments allocation summary

kolaylaştıracak her türlü kaynak kodunu göndeririz
+0

sadece Cihazlar, üzerinde çalışacak numaralar verir. Kaçak ve genel bellek kullanımı için kullanmanız gereken tek araçtır. 50MB bir sorun gibi gelmiyor ... – Volker

+2

gerçekten? Bu nedenle, 236MB'lik büyük sayıyı görmezden gelmek ve mevcut olmadığını iddia etmek tamam mı? Ben sadece bunu yapmaktan korkuyorum, kilimin altından süpürme gibi hissettiriyor;) – xaphod

+0

"Doğrudan xcode'dan bir hata ayıklama işlemi yürüttüm ve daha sonra Aletleri ona ekledim" Ve sorun bu. – matt

cevap

4

Bunun en yaygın nedeni yapılandırmanızdır. Varsayılan olarak Xcode'ta çalıştırdığınızda, Debug modunda oluşturursunuz. Enstrümanlar'da profil oluşturduğunuzda, varsayılan olarak Sürümünü oluşturur. Bunu değiştirmek için şemadaki Run ve Profil konfigürasyonlarınızı değiştirebilirsiniz.

+0

Merhaba Rob, yukarıdaki sorumu güncelleyeceğim: bu durumda hata ayıklama yapılandırması ve ekli enstrümanlarla manuel olarak oluşturuyorum – xaphod

+0

... ve üzgünüm son yorumumda sormam gerekiyordu: Bu araçlar Yayın sürümlerinde çalıştırılmalı mı demek istiyorsun? Aletleri hata ayıklamalarında çalıştırmam gerektiğini düşündüm. – xaphod

+2

Tipik olarak, yayınladığınız Cihazlar'daki yayınları çalıştırırsınız, çünkü gönderiminiz budur. Optimizasyonlar performansı önemli ölçüde etkileyebilir, bu nedenle, CPU profilleme (Aletlerin çok yaygın bir kullanımı olan), Release'de oldukça kullanışsızdır. Bellek kullanımı * genellikle * önemli ölçüde değişmez. –

İlgili konular