建了一个线程如下:
- (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调用了内存不会被释放啊,我也不知道是什么原因了,内存一直增加,请教各位大瞎了
解决方案 »
- 求教 MAC 上面 PKG_config的安装
- 【转载】核心动画编程指南【中文完整翻译版 -Core Animation Programming Guide
- 世界各国国家省市区(州市区)名字数据库哪里下载
- 关于cell已选标记不消失问题
- 如何把表格外的背景去掉?
- ios开发蓝牙问题BLE4.0(接收硬件发出的信号)
- ios 真机调试,点击控件(UITextField.UIButton...)就崩溃,拔掉数据线就没问题
- iOS页面跳转问题求助
- oc基础知识问题,第二行错误
- 请问NSDate变量在内存中占用几个字节?是如何存储的?
- 如何取消UIAlertView的动画闪屏效果?
- windows下编译objective c 安装GNUstep的问题
劝你还是用ARC吧