这段代码告诉我我正在消耗的内存量:
-(u_int)memoryUsage {
u_int result = 0;
struct task_basic_info info;
mach_msg_type_number_t size = sizeof(info);
kern_return_t kerr = task_info(mach_task_self(),
TASK_BASIC_INFO,
(task_info_t)&info,
&size);
if( kerr == KERN_SUCCESS ) {
result = (info.resident_size / 1024) / 1024;
} else {
NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
为了测试这个,我写了这个:
NSLog(@"USAGE: %u mb",[self memoryUsage]);
NSMutableArray *array = [NSMutableArray array];
for (int i = 0; i < 1000000; ++i) {
[array addObject:@"Hello!"];
}
NSLog(@"USAGE: %u mb",[self memoryUsage]);
[array removeAllObjects];
NSLog(@"USAGE: %u mb",[self memoryUsage]);
Run Code Online (Sandbox Code Playgroud)
输出是:
5 mb
10 mb
10 mb
Run Code Online (Sandbox Code Playgroud)
制作一个包含1000000个字符串的数组后,内存增加了5 MB.但清理后,内存使用率不会被修改.
这是为什么?
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |