系统栈内存分析和监控

  1. 查看系统栈空间大小

    ulimit -s 或者 ulimit -a | egrep '^stack size'

    栈空间溢出的原因

    栈空间溢出的错误一般多发生在程序循环和多层嵌套较多时。

    linux的栈、堆等内存模型

    http://www.alixixi.com/ePrint.asp?from=dev&id=36091

    其它参考资料

    1.cat /proc/进程ID/stat中地第28个结果为该任务在虚拟地址空间的栈的结束地址。 

    2.cat /proc/进程ID/status | egrep '^VmStk' 可以获得进程使用的栈的大小

    栈监控

    1.程序内部监控: 
    如果要监控程序在某个运行时候的栈的使用,可以用当前变量的地址减去进程第一个变量的地址来获取的栈实际使用的大小。

    2.程序外部监控: 利用cat /proc/进程ID/status | egrep '^VmStk' 可以获得进程使用的栈的大小。 但是这个方法只能监控进程,无法监控哪个线程使用了多少堆栈。

    栈测试经验


    1.在做线上线下环境同步时,需要关注栈的大小是否一致 
    2.如果出现非常诡异的core,考虑一下是不是栈耗光导致的 
    3.code reivew的时候关注程序循环和多层嵌套的深度,防止过多的深度导致栈耗光。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值