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阅读 175,674评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,491评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,081评论 6 342
  • 且夫水之积也不厚,则其负大舟也无力。覆杯水于坳堂之上,则芥为之舟,置杯焉则胶,水浅而舟大也。 昨天下午开始起风,晚...
    东丰林波阅读 1,352评论 0 0
  • 以前在高中的时候,学校有个学霸,据说是半夜两点爬起来读书,家长老师知道了他的勤奋之后,纷纷向我们宣扬,希望大家都能...
    其牙阅读 2,415评论 0 0