美文网首页
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的使用内存统计区别

    app开发过程中,我们经常需要查看内存的一些详细信息。ios一般是通过xcode、Instruments(Allo...

  • Android离线统计方案

    一、离线统计方案概述 离线统计在App使用过程中,不断采集统计数据,写入内存缓存或本地文件,并通过相应的策略控制,...

  • Redis内存模型

    一、Redis内存统计 工欲善其事必先利其器,在说明Redis内存之前首先说明如何统计Redis使用内存的情况。 ...

  • Redis学习--理解内存

    内存消耗 内存使用统计info memory info memory详细解释 当mem_fragmentation...

  • 第8章 理解内存

    理解Redis内存消耗,管理和优化。 1. 内存消耗 1.1 内存使用统计 通过info memory命令获取内存...

  • Android WebView独立进程解决方案

    App中大量Web页面的使用容易导致App内存占用巨大,存在内存泄露,崩溃率高等问题,WebView独立进程的使用...

  • Redis内存优化

    Redis内存优化 1.内存消耗 1.1内存使用统计 属性名属性说明used_memoryRedis 分配器分配的...

  • Flutter优秀文章汇总_闲鱼5连,6连(更新最后一公里)

    转载 Android Flutter内存初探 Flutter是如何使用内存,又会对Native App的内存带来哪...

  • ##iOS中堆和栈的区别

    前言 在我们编程中,不可避免的使用堆和栈内存,它们是什么?有什么区别?下面我从几个方面来说明区别 使用内存的行为 ...

  • 内存占用分析三板斧

    1、top命令,统计用户态程序使用内存总和A; 2、free -g显示剩余内存和cache的内存总和B; 3、如果...

网友评论

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

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