sdk是ios6.1,不开ARC。#import <sys/sysctl.h>
#import <mach/mach.h>-(id)init
{
self=[super init];
[self usedMemory];
[self addtitle:@"d"];
[self usedMemory];
return self;
}-(void)addtitle:(NSString *)title
{
for (double i=0; i<200000;i++) {
// NSString *T2=[@" > " stringByAppendingString:title];
NSObject * T2=[[NSObject alloc]init];
[T2 release];
}
}- (void )usedMemory
{
task_basic_info_data_t taskInfo;
mach_msg_type_number_t infoCount = TASK_BASIC_INFO_COUNT;
kern_return_t kernReturn = task_info(mach_task_self(),
TASK_BASIC_INFO,
(task_info_t)&taskInfo,
&infoCount);
if (kernReturn != KERN_SUCCESS
) {
NSLog(@"Nofound");
}
NSLog(@"Memery%f", taskInfo.resident_size / 1024.0 / 1024.0);;
}
运行结果:
2013-09-14 18:56:24.240 menerytest[5913:c07] Memery16.789062
2013-09-14 18:56:24.281 menerytest[5913:c07] Memery17.128906如果把 [T2 release]; 注释掉:
2013-09-14 19:05:41.786 menerytest[6476:c07] Memery16.890625
2013-09-14 19:05:41.804 menerytest[6476:c07] Memery20.320312原本T2用得是 NSString *T2=[@" > " stringByAppendingString:title];
不release内存有可观的增长,release后的内存增长类似上面第一个结果,但是程序最后会crash掉。
为啥release掉还是有内存泄漏了呢?尽管十分微小。而且为什么“[@" > " stringByAppendingString:title]” release后会crash呢?
#import <mach/mach.h>-(id)init
{
self=[super init];
[self usedMemory];
[self addtitle:@"d"];
[self usedMemory];
return self;
}-(void)addtitle:(NSString *)title
{
for (double i=0; i<200000;i++) {
// NSString *T2=[@" > " stringByAppendingString:title];
NSObject * T2=[[NSObject alloc]init];
[T2 release];
}
}- (void )usedMemory
{
task_basic_info_data_t taskInfo;
mach_msg_type_number_t infoCount = TASK_BASIC_INFO_COUNT;
kern_return_t kernReturn = task_info(mach_task_self(),
TASK_BASIC_INFO,
(task_info_t)&taskInfo,
&infoCount);
if (kernReturn != KERN_SUCCESS
) {
NSLog(@"Nofound");
}
NSLog(@"Memery%f", taskInfo.resident_size / 1024.0 / 1024.0);;
}
运行结果:
2013-09-14 18:56:24.240 menerytest[5913:c07] Memery16.789062
2013-09-14 18:56:24.281 menerytest[5913:c07] Memery17.128906如果把 [T2 release]; 注释掉:
2013-09-14 19:05:41.786 menerytest[6476:c07] Memery16.890625
2013-09-14 19:05:41.804 menerytest[6476:c07] Memery20.320312原本T2用得是 NSString *T2=[@" > " stringByAppendingString:title];
不release内存有可观的增长,release后的内存增长类似上面第一个结果,但是程序最后会crash掉。
为啥release掉还是有内存泄漏了呢?尽管十分微小。而且为什么“[@" > " stringByAppendingString:title]” release后会crash呢?
解决方案 »
- 关于IPHONE开发完毕后发布的问题
- iPhone/iPad的tableview使用
- 按时间和等级算分的算法
- IOS 自带facebook登录分享
- IOS CALayer的anchorpoint属性在官方API中的解释(0,0)坐标是左下角,是错了吧
- iOS通过soap协议调用webservice接口时遇到问题,求指教!!!
- 想问下,MMDrawerController 侧滑出来,然后push再返回的时候,如何不隐藏侧滑菜单?我是这样跳转的
- charles 4.0.1 版本没有request和response?
- 监听NSMutableArray可变数组变化需求 思路征集
- IOS GL glReadPixels 崩溃问题
- 如何弹出打开方式列表-----像在邮件中点击附件一样出现应用程序列表
- 华为开发者联盟推出的华为推送有什么优势啊?
[T2 release];这之间的微小内存去哪了
NSAutoreleasePool *pool = [NSAutoreleasePool new];
.....
[pool release];
[self usedMemory];你这样试试.
@autoreleasepool { for (double i=0; i<200000;i++)
{
NSObject * T2=[[NSObject alloc]init];
[T2 release];
}
}