美文网首页
app的使用内存统计区别

app的使用内存统计区别

作者: 太空蛙 | 来源:发表于2021-09-28 19:06 被阅读0次

    app开发过程中,我们经常需要查看内存的一些详细信息。
    ios一般是通过xcode、Instruments(Allocations),代码获取当前使用内存如下:

    #import <mach/mach.h>
    #import <os/proc.h>
    
    //获取app使用内存情况(注:对只malloc的内存,不会统计,只有进行了写操作才会统计进来)
    + (NSInteger)useMemoryForApp{
        task_vm_info_data_t vmInfo;
        mach_msg_type_number_t count = TASK_VM_INFO_COUNT;
        kern_return_t kernelReturn = task_info(mach_task_self(), TASK_VM_INFO, (task_info_t)&vmInfo, &count);
        if (kernelReturn == KERN_SUCCESS) {
            int64_t memoryUsageInByte = (int64_t)vmInfo.phys_footprint;
            return (NSInteger)memoryUsageInByte/1024/1024;
        }
        return 0;
    }
    

    这里代码获取的内存大小跟xcode的memory大小差不多,但是跟Instruments(Allocations)有时相差比较大。

    //分配100M内存并初始化为1
    void *p = malloc(1024*1024*100);
    memset(p, 1, 1024*1024*100);
    

    对于上述代码,分配内存后进行了相关操作,Instruments的Allocations、Activity Monitor都会统计显示。

    //分配100M内存,未初始化
    void *p = malloc(1024*1024*100);
    

    对于上述代码,只分配了内存,没有进行后续操作,Instruments的Allocations会统计显示,但是Activity Monitor和代码获取的方式则认为没有真正使用到这块内存,不会统计显示。

    相关文章

      网友评论

          本文标题:app的使用内存统计区别

          本文链接:https://www.haomeiwen.com/subject/yzclnltx.html