【发布时间】:2018-02-26 14:32:41
【问题描述】:
根据我目前所读到的内容,实际/驻留字节表示分配给应用程序的字节数,包括应用程序不再使用但操作系统尚未回收的字节数。 实时/脏字节是应用程序实际使用的字节,操作系统无法回收。 我认为 XCode Debug navigator 中显示的数字是 Live Bytes。
我有兴趣以编程方式获取这个数字(用于我们自己的统计/分析),但我发现的代码只能给出驻留字节的值,它大于 Xcode 在某些设备上显示的值(几乎两次很大),实际上在相同的设备上但不同的 iOS 版本。 (在 iOS 9 上,它给出的值几乎是 Xcode 的两倍,但在 iOS 11 上,它给出的值几乎与 Xcode 相同)。
我使用的代码是这样的:
struct mach_task_basic_info info;
mach_msg_type_number_t size = MACH_TASK_BASIC_INFO_COUNT;
kern_return_t kerr = task_info(mach_task_self(),
MACH_TASK_BASIC_INFO,
(task_info_t)&info,
&size);
if( kerr == KERN_SUCCESS ) {
NSLog(@"Memory in use (in bytes): %u", info.resident_size);
return info.resident_size;
} else {
NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
}
是否有一些代码可以像 Xcode 显示的那样获取实时字节值?
【问题讨论】:
标签: ios xcode memory memory-profiling