建了一个线程如下:
- (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调用了内存不会被释放啊,我也不知道是什么原因了,内存一直增加,请教各位大瞎了

解决方案 »

  1.   

    你的NSString都没有释放...autorelease其实就可以了
    劝你还是用ARC吧
      

  2.   

    嗯,我试试ARC的方式
      

  3.   

    我做了2个DEMO工程,其中一个新建的,就只实现了上面代码的功能,内存也有增加,但是增加得很慢,其中一个在现在工程的基础上修改的,基本上也该成跟DEMO工程一样了,没有任何多余的代码,但是内存增加得就快一点,真搞不懂是什么原因,代码都一样了
      

  4.   

    ARC的方式也是一样的,模拟器运行以后,在活动监视器里面观察程序占的内存会不断增加,有人知道怎么看真机的内存吗,我想看看真机怎么样,我是用 IPAD真机调试
      

  5.   

    用ARC的话肯定会有时间段内存不断增加的,只要不一直增加就ok拉。