-
查看系统栈空间大小
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的时候关注程序循环和多层嵌套的深度,防止过多的深度导致栈耗光。
系统栈内存分析和监控
最新推荐文章于 2022-08-07 11:24:22 发布