建了一个线程如下:
- (void)getTimerInfoThread{
while (1) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
if (self.readTimerDataIng == false && self.readTimerData) {
self.readTimerDataIng = true;
int resTimer = [self getTableTimer];
self.readTimerDataIng = false;
sleep(1);
}
[pool drain];
}
return;
}
线程每秒执行一次getTableTimer函数,函数如下
- (int)getTableTimer//此函数向一个HTTP发送POST请求,属于同步请求
{
int errorTableInfoCode = 0;
// NSString *timerInfo = [pwebOperator getTableInformation:@"" :sCountDownUrl:sCountDownRef];
NSData *postData = [@"" dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
// NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
NSMutableURLRequest *request =[ [NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:sCountDownUrl]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:sCountDownRef forHTTPHeaderField:@"Referer"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSMutableData *currenceData=(NSMutableData*)[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//处理返回的数据
NSString *resData = [[NSString alloc] initWithData:currenceData encoding:NSUTF8StringEncoding];
[resData release];
[request release];
return errorTableInfoCode;
}
在线程中执行完此函数以后,我在模拟器中查看内存的使用情况,发现内存在不停的增加,每隔几秒就会增加0.1M
查过资料当有NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];的时候
[resData release];
[request release];这两句其实是可以去掉的,我把这两句屏蔽掉以后再测试
返现情况是一样的,内存还是在增加
当把线程中的int resTimer = [self getTableTimer];这一句屏蔽掉以后内存就稳定了,不会增加,会不会是HTTP调用了内存不会被释放啊,我也不知道是什么原因了,内存一直增加,请教各位大瞎了
- (void)getTimerInfoThread{
while (1) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
if (self.readTimerDataIng == false && self.readTimerData) {
self.readTimerDataIng = true;
int resTimer = [self getTableTimer];
self.readTimerDataIng = false;
sleep(1);
}
[pool drain];
}
return;
}
线程每秒执行一次getTableTimer函数,函数如下
- (int)getTableTimer//此函数向一个HTTP发送POST请求,属于同步请求
{
int errorTableInfoCode = 0;
// NSString *timerInfo = [pwebOperator getTableInformation:@"" :sCountDownUrl:sCountDownRef];
NSData *postData = [@"" dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
// NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
NSMutableURLRequest *request =[ [NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:sCountDownUrl]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:sCountDownRef forHTTPHeaderField:@"Referer"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSMutableData *currenceData=(NSMutableData*)[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//处理返回的数据
NSString *resData = [[NSString alloc] initWithData:currenceData encoding:NSUTF8StringEncoding];
[resData release];
[request release];
return errorTableInfoCode;
}
在线程中执行完此函数以后,我在模拟器中查看内存的使用情况,发现内存在不停的增加,每隔几秒就会增加0.1M
查过资料当有NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];的时候
[resData release];
[request release];这两句其实是可以去掉的,我把这两句屏蔽掉以后再测试
返现情况是一样的,内存还是在增加
当把线程中的int resTimer = [self getTableTimer];这一句屏蔽掉以后内存就稳定了,不会增加,会不会是HTTP调用了内存不会被释放啊,我也不知道是什么原因了,内存一直增加,请教各位大瞎了
劝你还是用ARC吧