关于IPHONE内存的困惑,跪求!!!!!!!
建了一个线程如下:- (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调用了内存不会被释放啊,我也不知道是什么原因了,内存一直增加,请教各位大瞎了 --------------------编程问答-------------------- 都没有人回啊 --------------------编程问答-------------------- 你的NSString都没有释放...autorelease其实就可以了
劝你还是用ARC吧 --------------------编程问答--------------------
嗯,我试试ARC的方式
--------------------编程问答-------------------- 我做了2个DEMO工程,其中一个新建的,就只实现了上面代码的功能,内存也有增加,但是增加得很慢,其中一个在现在工程的基础上修改的,基本上也该成跟DEMO工程一样了,没有任何多余的代码,但是内存增加得就快一点,真搞不懂是什么原因,代码都一样了 --------------------编程问答-------------------- ARC的方式也是一样的,模拟器运行以后,在活动监视器里面观察程序占的内存会不断增加,有人知道怎么看真机的内存吗,我想看看真机怎么样,我是用 IPAD真机调试 --------------------编程问答-------------------- --------------------编程问答-------------------- 用ARC的话肯定会有时间段内存不断增加的,只要不一直增加就ok拉。 --------------------编程问答--------------------
或许有点道理。。
补充:移动开发 , iPhone