我試圖檢查我的儀器中的應用程序內存問題。當我加載應用程序時,我會播放一些聲音並在UIImageView中顯示一些動畫。 爲了節省一些內存,我只在需要時才加載聲音,當我停止播放時,我將它從內存中釋放。內存問題 - 生活與整體 - >應用程序被殺
問題1:
我的應用程序正在使用大約生活內存5.5MB。但總體部分在開始到20MB之後正在增長,然後它正在緩慢增長(大約100kB /秒)。但是,負責圖書館的OpenAL(OAL ::緩衝區),使dyld(_dyld_start)-I我不知道這真的是,和一些其他的東西像ft_mem_qrealloc,CGFontStrikeSetValue,...
問題2:
當整體節大約30MB,應用程序崩潰(被殺害)。 根據我已經讀過的有關整體內存的事實,這意味着我的所有分配和釋放約爲30MB。但我真的不明白這個問題。當我需要一些聲音例如我加載它的內存,當我不再需要它時,我釋放它。但是這意味着當我加載1MB聲音時,此操作會增加2MB的整體內存使用量。我對嗎?當我加載10個聲音時,我的應用程序崩潰,只是因爲我的整體過高甚至生活的事實仍然很低? 我對此很困惑。
有人可以幫我清除它嗎?
(我在iOS 5和使用ARC)
一些代碼:
創造聲音的OpenAL:
MYOpenALSound *sound = [[MyOpenALSound alloc] initWithSoundFile:filename willRepeat:NO];
if(!sound)
return;
[soundDictionary addObject:sound];
播放:
[sound play];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, ((sound.duration * sound.pitch) + 0.1) * NSEC_PER_SEC), dispatch_get_current_queue(), ^{
[soundDictionary removeObjectForKey:[NSNumber numberWithInt:soundID]];
});
}
創建與聲音AVAudioPlayer:
[musics replaceObjectAtIndex:ID_MUSIC_MAP withObject:[[Music alloc] initWithFilename:@"mapMusic.mp3" andWillRepeat:YES]];
pom = [musics objectAtIndex:musicID];
[pom playMusic];
,並停止和釋放它:
[musics replaceObjectAtIndex:ID_MUSIC_MAP withObject:[NSNull null]];
和圖像動畫: 我加載從大的PNG文件中的圖像(這也realated到我的其他話題:https://stackoverflow.com/questions/12223714/memory-warning-uiimageview-and-its-animations) 我有幾個的UIImageViews和時間我設置動畫陣列來播放動畫...
UIImage *source = [[UIImage alloc] initWithCGImage:[[UIImage imageNamed:@"imageSource.png"] CGImage]];
cutRect = CGRectMake(0*dimForImg.width,1*dimForImg.height,dimForImg.width,dimForImg.height);
image1 = [[UIImage alloc] initWithCGImage:CGImageCreateWithImageInRect([source CGImage], cutRect)];
cutRect = CGRectMake(1*dimForImg.width,1*dimForImg.height,dimForImg.width,dimForImg.height);
...
image12 = [[UIImage alloc] initWithCGImage:CGImageCreateWithImageInRect([source CGImage], cutRect)];
NSArray *images = [[NSArray alloc] initWithObjects:image1, image2, image3, image4, image5, image6, image7, image8, image9, image10, image11, image12, image12, image12, nil];
,這陣我只是用簡單的喜歡:
myUIImageView.animationImages = images, ... duration -> startAnimating
分享一些代碼花花公子 – AppHandwerker