zoukankan      html  css  js  c++  java
  • Linux进程内存用量分析之堆内存篇

     

    https://mp.weixin.qq.com/s/a6mLMDinYQGUSaOsGYCEaA

    独家|Linux进程内存用量分析之堆内存篇

    姬晨烜 58技术 2019-12-06

    导语

    本文将介绍几种内存泄漏检测工具,并通过实际例子介绍一种分析堆内存占用量的工具和方法,帮助定位内存膨胀问题。

    背景

    进程的内存管理是每一个开发者必须要考虑的问题,对于C++程序进程来说,出现问题很多情况下都与内存挂钩。进程崩溃问题通常可以使用gdb等调试工具轻松排查并解决。而对于进程内存膨胀这类问题,原因通常有三个:

    1.内存泄漏。

    2.分配器管理的空闲内存较多而造成的内存空洞。

    3.有未统计使用的未知内存占用。

    内存泄漏问题可以使用一些工具来检测。但是对于后两种问题,却一直没有比较通用的方法去确定。本文将介绍几种内存泄漏检测工具,并通过实际例子介绍一种分析堆内存占用量的工具和方法,帮助定位内存膨胀问题。

    常见内存问题的分析方法

    对于内存泄露问题,目前已经有较成熟的工具进行检测,这里简单介绍两个工具:AddressSanitizer和Valgrind。AddressSanitizer是google开源项目,可以用来检测内存泄漏和其他导致进程崩溃的内存问题。它的优势在于造成的额外CPU占用很小,但是需要重新编译项目,并且在编译的时候添加-fsanitize=address选项。在程序运行时如果有任何内存问题,就会终止进程并且打印出详细的错误信息。如果进程存在内存泄漏会在进程结束后,打印出所有泄漏的内存大小和申请这块内存的调用栈,如下图所示:
     
     
  • 相关阅读:
    立项管理--复习需加强知识点
    Python函数中的->none是什么意思和作用
    信息系统项目管理基础--复习需加强知识点
    python笔记
    案例分析--课堂笔记
    对下载的软件包做校验
    pc端和公众号同时开发的方案选择
    应用服务器拖垮数据库问题排查
    常用的idea插件
    如何进行后端开发 (大体逻辑)
  • 原文地址:https://www.cnblogs.com/rsapaper/p/12000206.html
Copyright © 2011-2022 走看看