参考资料:

总结:

1、进程的栈大小是在进程执行的时刻才能指定的,即不是在编译的时候决定的,也不是在链接的时候决定的

2、进程的栈大小是随机确定的至少比线程栈要大,但是不到线程栈大小的2倍

3、线程栈大小是固定的,也就是ulimit -a 显示的值

查看线程栈大小:

可以看到默认情况下线程栈大小为8192(8MB),可以使用ulimit -s xxx修改线程默认栈大小

(1)检查线程栈默认大小(8KB)

线程执行2030次之后,出现段错误(2030*4K=8120K)

(2)修改栈大小,使用pthread_attr_setstack()

如上修改栈大小为16MB,其中线程栈的空间从堆中进行分配

程序执行4063次后出现段错误(4063*4KB)

(3)创建两个线程,使用默认栈大小执行

创建两个线程,默认单个线程栈大小为8M

执行结果1:程序执行4009次之后段错误(4009*4KB)

执行结果2:程序执行3380次之后段错误(3380*4KB)

总结:

两个线程时,两个线程栈的总和不是固定值,也不是线程栈的2倍

(3)不使用任何线程

执行结果1:程序执行2538次后段错误(2538*4KB)

执行结果2:程序执行2537次后段错误(2537*4KB)

总结:

进程的栈大小不是固定的,而是比线程栈大一些

(4)线程栈从进程栈中分配

执行结果1:   程序执行2536次后段错误(2536*4KB>8M)

执行结果2:程序执行2537次后段错误(2537*4KB>8M)

总结:

线程从进程栈分配空间,大小并不是固定的,如果分配空间大于进程栈空间,那么直接运行时出现段错误。

关于进程栈和线程栈总结:

(1)进程栈大小时执行时确定的,与编译链接无关

(2)进程栈大小是随机确认的,至少比线程栈要大,但不会超过2倍

(3)线程栈是固定大小的,可以使用ulimit -a 查看,使用ulimit -s 修改

进程内核栈、用户栈及 Linux 进程栈和线程栈的区别

Linux 进程栈和线程栈的区别 http://www.cnblogs.com/luosongchao/p/3680312.html 总结:线程栈的空间开辟在所属进程的堆区,线程与其所属的进程共享进程 ...

【摘】Linux虚拟地址空间布局以及进程栈和线程栈总结

linux进程栈和线程栈大小,Linux进程栈和线程栈相关推荐

  1. linux如何查询一个文件夹大小,Linux下如何查看某个文件夹所占空间大小

    Linux下的du命令可以查看某个目录或者文件所占空间大小. 基础知识: 命令参数: -a或-all 显示目录中个别文件的大小. -b或-bytes 显示目录或文件大小时,以byte为单位. -c或- ...

  2. linux增加预读缓存区大小,Linux blockdev命令设置文件预读大小介绍

    在命令行调用设备的ioctl函数.在Linux系统中,似乎对设备的直接操作只有ioctl函数了.他接受的参数不是太多,而且都是一一对应的. blockdev - 从命令行调用区块设备控制程序 bloc ...

  3. linux增加预读缓存区大小,Linux使用blockdev命令调整文件预读大小的方法

    我们在使用过程中,可以对一些文件选择预读,这可以加快我们的工作效率.不过有时遇到一些较大的文件,就会导致我们的预读不全,那么这个问题该怎么解决呢?今天小编和大家分享下使用blockdev命令设置文件预 ...

  4. linux怎么用命令查看jvm大小,linux 下使用命令查看jvm信息

    java程序员除了编写业务代码以外,特别是项目上线以后,更须要关注的是系统的性能表现,这个时候就须要了解一下jvm的性能表现了,能够借助于java虚拟机自带的一些分析工具,主要有三个经常使用的命令.j ...

  5. linux环境根据pid查看堆栈大小,linux - 通过PID获取过程的机器代码,而无需附加调试器 - 堆栈内存溢出...

    您可以看看gcore: $ gcore usage: gcore [-o filename] pid 因此您可以使用其pid转储进程核心: $ gcore 792 warning: Could not ...

  6. 【Linux操作系统基础】第六章 Linux中的进程管理

    一.进程及其状态 程序是静态的代码文件,没有生命周期.进程是指程序运行时的形态,是程序的一个副本,进程有生命周期(准备期,运行期,终止期) 进程是资源调用的最小单位,系统中的资源在同一时间只能被同一个 ...

  7. java web 线程数_Java Web应用调优线程池

    最简单的单线程 我们先从基础开始.无论使用哪种应用服务器或者框架(如Tomcat.Jetty等),他们都有类似的基础实现.Web服务的基础是套接字(socket),套接字负责监听端口,等待TCP连接, ...

  8. 【重难点】【JUC 05】线程池核心设计与实现、线程池使用了什么设计模式、要你设计的话,如何实现一个线程池

    [重难点][JUC 05]线程池核心设计与实现.线程池使用了什么设计模式.要你设计的话,如何实现一个线程池 文章目录 [重难点][JUC 05]线程池核心设计与实现.线程池使用了什么设计模式.要你设计 ...

  9. Linux系统编程----12(线程概念,Linux线程实现原理,栈中ebp指针和ebp指针,线程的优缺点和共享资源)

    线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程(thread). 更准确的定义是:线程是"一个进程内部的控制序列" 一切进程至少都有一个执行线程 线程在进程内部运行,本 ...

  10. linux限制堆栈大小,进程超过RedHat Enterprise Linux 6的线程堆栈大小限制?

    我在RHEL 6.3上运行了几个进程,但由于某种原因,它们超出了线程堆栈大小. 例如,Java进程在启动时在运行时被赋予-Xss256k的堆栈大小,并且在实际代码中使用pthread_attr_set ...

最新文章

  1. Web渗透测试(sql注入 access,mssql,mysql,oracle,)
  2. 文件寄生——寄生虫自体繁衍的道路
  3. 类型的方法,以及关于Stringbuffer和String builder的相关补充
  4. Python 机器学习 随机森林 天气最高温度预测任务(二)
  5. 华为关于gvrp 的配置,一般步骤以及应用。
  6. 记某站被搜索引擎入侵
  7. 2021年阿里笔试题分享——大数相加(附源码)
  8. 谈谈杭州市未来15年城市发展重点和杭州第二机场位置预测
  9. 硬件基础之继电器互锁工作原理
  10. PDF打开时显示“正在准备文档以供阅读
  11. 通向大规模医疗知识图谱:万字详解天衍实验室知识图谱对齐技术
  12. 品质担当,有效提升办公生产力,永艺XY人体工学椅开箱实测
  13. 解决javaWeb图片加载不出来问题的方案
  14. 命名时取代基优先顺序_烷烃的系统命名
  15. Docker学习笔记1-初识Docker
  16. spa项目开发首页导航左侧菜单
  17. 数据密集型系统设计:索引及存储(B树、LSM树、OLTP及OLAP)
  18. 拼多多是PHP还是java,应届程序员收到拼多多offer 表情瞬间爆发
  19. 宝塔服务器源代码修改记录,宝塔BT面板修改相关记录,所有插件免费用
  20. ANSYS workbench的模态分析基本原理和步骤

热门文章

  1. java离线地图web
  2. c语言怎么添加按钮,关于用C语言制作按钮的问题
  3. stagefright_StageFright:Android操作系统中最易受攻击的错误
  4. ACDSee15软件
  5. 时间序列学习(4):平稳性检验(单位根检验、ADF检验)
  6. 如何制作/输入 英语/美语音标
  7. matlab负反馈传函,已知负反馈系统开环传函求阶跃传函
  8. 条码打印软件如何制作二维码
  9. 快40岁了,我还要不要继续写代码呢?
  10. 64位Win10 Modelsim破解及证书LICENSE.TXT无法生成解决方法