zoukankan      html  css  js  c++  java
  • 如何在代码里打印程序所占用的内存

    在项目开发期间我们在内存调优的时候较多的使用系统的工具:

    Activity Monitor是能如实反应程序实际所占用内存的实时变化情况。 但是在这种模式下,我觉得自己不能看到控制台所打印的日志, 总而言之, 上面的这种查看程序内存的方法没有问题,

    但是如果你想在控制台里面打印出来程序所占用的内存,也可使用如下方法:

    void report_memory(void)
    {
        struct task_basic_info info;
        mach_msg_type_number_t size = sizeof(info);
        kern_return_t kerr = task_info(mach_task_self(),
                                       TASK_BASIC_INFO,
                                       (task_info_t)&info,
                                       &size);
        if( kerr == KERN_SUCCESS )
        {
            //printf("Memory vm : %u\n",info.virtual_size);
            //printf("Memory in use (in bytes): %u b\n", info.resident_size);
            //printf("Memory in use (in k-bytes): %f k\n", info.resident_size / 1024.0);
            printf("Memory in use (in m-bytes): %f m\n", info.resident_size / (1024.0 * 1024.0));
        }
        else
        {
            printf("Error with task_info(): %s\n", mach_error_string(kerr));
        }
    }

    记得在引入头文件:

    #import <mach/mach.h>

    如果想在整个程序内直接调用这个方法, 可以在*-Prefix.pch文件里引入声明:

    #ifdef __OBJC__
        #import <UIKit/UIKit.h>
        #import <Foundation/Foundation.h>
    #endif
    
    
    extern void report_memory(void);

    在你想打印内存的地方可以直接调用此方法:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
          ////你的逻辑代码。。。。
         report_memory();
    }

    下面是控制台里打印出来的内存。(来自模拟器)

  • 相关阅读:
    如何编译Linux内核
    linux启动过程
    linux ifconfig
    Android 4.0 x86安装教程 附带联网参数详细设置
    linux ntfs模块
    Java 入门进阶
    深入理解Java中的String
    Java中字符串string的数据类型
    IDEA设置JVM运行参数
    Java11实战:模块化的 Netty RPC 服务项目
  • 原文地址:https://www.cnblogs.com/moshengren/p/2573610.html
Copyright © 2011-2022 走看看