저는 이론적으로 무기한으로 작업해야하는 프로젝트를 수행해 왔습니다. 즉, 프로그램을 시작하고 전원 공급 장치에 Ipad를 연결하면 몇 일, 몇 달, 몇 년 동안 작동합니다. 나는 무엇을하더라도 메모리는 점차적으로 할당되지만 해제되지는 않습니다. 계측기 누출은 메모리 누수가 없음을 나타내지 만 계측기 할당 및 활동 모니터 메모리는 점진적으로 할당되어 증가하고 커집니다.무한히 실행되는 응용 프로그램, 특히 무한 비디오 재생에서 메모리 누수가 발생했습니다.
ViewController.h
@interface ViewController : UIViewController
{
MPMoviePlayerController *player;
}
ViewController.m
: 그것은 특히 비디오 간단한 예 (엑스 코드 4.3, 아니 ARC)를 재생할 때, 발생하는 곳이 많이 있습니다@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
player = [[MPMoviePlayerController alloc] initWithContentURL: [NSURL URLWithString:@"http://mysite.com/movie.mp4"]];
player.view.frame = CGRectMake(400, 500, 360, 240);
[self.view addSubview:player.view];
player.controlStyle = MPMovieControlStyleNone;
player.repeatMode = MPMovieRepeatModeOne;
[player play];
}
- (void)viewDidUnload
{
[player stop];
[player.view removeFromSuperview];
[player release];
[super viewDidUnload];
}
- (void)dealloc
{
[player release];
[super dealloc];
}
이 간단한 응용 프로그램은 비디오 재생을 반복하는 것만으로는 아무 것도하지 않습니다. 3 분마다 평균 100kb가 할당됩니다. 매일 - 평균 40MB. Instruments Activity Monitor로 프로파일 링하고 있습니다. 시간이 지남에 앱이 죽습니다. 뭐가 잘못 되었나요? 왜 비디오가 보일 때 (루프 재생) 새 오브젝트를 초기화하지 않고 메모리가 커지는 이유는 무엇입니까?
하위 뷰를 제거 하시겠습니까? ARC를 사용하고 있습니까? '아니요'인 경우 언제 [플레이어 발표]를합니까? 빌드 및 분석 (있는 경우)에서 발견 된 문제를 해결하십시오. [힙샷 분석] (http://www.friday.com/bbum/2010/10/17/when-is-a-leak-not-a-leak-using-heapshot-analysis-to-find- 바람직하지 않은 메모리 증가 /). –
예, viewDidUnload에서 제거합니다. 나는 ARC를 사용하지 않는다. viewDidUnload 및 dealloc에서 릴리스됩니다. 분석은 "No issues"를 보여줍니다. 나는 응용 프로그램을 시작하고 플레이어를 초기화하고 시작하며 아무것도하지 않고 그냥 비디오를 보면서 반복 재생 (MPMovieRepeatModeOne - 무한 재생)입니다. 나는 그 신청서를 끄지 않는다. –