Objective-C/iOS 获取内存使用

获取内存总大小:

size_t size = sizeof(int);
int results;
int mib[2] = {CTL_HW, HW_PHYSMEM};
sysctl(mib, 2, &results, &size, NULL, 0);
return (NSUInteger) results;

需要引入头文件:

#include <sys/sysctl.h>

获取可用内存:

mach_port_t           host_port = mach_host_self();
mach_msg_type_number_t   host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t);
vm_size_t               pagesize;
vm_statistics_data_t     vm_stat;

host_page_size(host_port, &pagesize);

if (host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size) != KERN_SUCCESS) NSLog(@"Failed to fetch vm statistics");

unsigned long mem_free = vm_stat.free_count * pagesize;

return mem_free;

需要引入头文件:

#import <mach/mach.h>

获取当前App使用内存:

struct task_basic_info info;
mach_msg_type_number_t size = TASK_BASIC_INFO_COUNT;//sizeof(info);
kern_return_t kerr = task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t)&info, &size);
return (kerr == KERN_SUCCESS) ? info.resident_size : 0; // size in bytes

同样需要引入头文件:

#import <mach/mach.h>

此方法可设置持续记录,可达到查看App使用是内存增减的情况。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 144,306评论 18 621
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 106,598评论 12 127
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 38,192评论 5 340
  • 且夫水之积也不厚,则其负大舟也无力。覆杯水于坳堂之上,则芥为之舟,置杯焉则胶,水浅而舟大也。 昨天下午开始起风,晚...
    东丰林波阅读 75评论 0 0
  • 以前在高中的时候,学校有个学霸,据说是半夜两点爬起来读书,家长老师知道了他的勤奋之后,纷纷向我们宣扬,希望大家都能...
    其牙阅读 68评论 0 0