linux进程栈和线程栈大小,Linux进程栈和线程栈
参考资料:
总结:
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进程栈和线程栈相关推荐
- linux如何查询一个文件夹大小,Linux下如何查看某个文件夹所占空间大小
Linux下的du命令可以查看某个目录或者文件所占空间大小. 基础知识: 命令参数: -a或-all 显示目录中个别文件的大小. -b或-bytes 显示目录或文件大小时,以byte为单位. -c或- ...
- linux增加预读缓存区大小,Linux blockdev命令设置文件预读大小介绍
在命令行调用设备的ioctl函数.在Linux系统中,似乎对设备的直接操作只有ioctl函数了.他接受的参数不是太多,而且都是一一对应的. blockdev - 从命令行调用区块设备控制程序 bloc ...
- linux增加预读缓存区大小,Linux使用blockdev命令调整文件预读大小的方法
我们在使用过程中,可以对一些文件选择预读,这可以加快我们的工作效率.不过有时遇到一些较大的文件,就会导致我们的预读不全,那么这个问题该怎么解决呢?今天小编和大家分享下使用blockdev命令设置文件预 ...
- linux怎么用命令查看jvm大小,linux 下使用命令查看jvm信息
java程序员除了编写业务代码以外,特别是项目上线以后,更须要关注的是系统的性能表现,这个时候就须要了解一下jvm的性能表现了,能够借助于java虚拟机自带的一些分析工具,主要有三个经常使用的命令.j ...
- linux环境根据pid查看堆栈大小,linux - 通过PID获取过程的机器代码,而无需附加调试器 - 堆栈内存溢出...
您可以看看gcore: $ gcore usage: gcore [-o filename] pid 因此您可以使用其pid转储进程核心: $ gcore 792 warning: Could not ...
- 【Linux操作系统基础】第六章 Linux中的进程管理
一.进程及其状态 程序是静态的代码文件,没有生命周期.进程是指程序运行时的形态,是程序的一个副本,进程有生命周期(准备期,运行期,终止期) 进程是资源调用的最小单位,系统中的资源在同一时间只能被同一个 ...
- java web 线程数_Java Web应用调优线程池
最简单的单线程 我们先从基础开始.无论使用哪种应用服务器或者框架(如Tomcat.Jetty等),他们都有类似的基础实现.Web服务的基础是套接字(socket),套接字负责监听端口,等待TCP连接, ...
- 【重难点】【JUC 05】线程池核心设计与实现、线程池使用了什么设计模式、要你设计的话,如何实现一个线程池
[重难点][JUC 05]线程池核心设计与实现.线程池使用了什么设计模式.要你设计的话,如何实现一个线程池 文章目录 [重难点][JUC 05]线程池核心设计与实现.线程池使用了什么设计模式.要你设计 ...
- Linux系统编程----12(线程概念,Linux线程实现原理,栈中ebp指针和ebp指针,线程的优缺点和共享资源)
线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程(thread). 更准确的定义是:线程是"一个进程内部的控制序列" 一切进程至少都有一个执行线程 线程在进程内部运行,本 ...
- linux限制堆栈大小,进程超过RedHat Enterprise Linux 6的线程堆栈大小限制?
我在RHEL 6.3上运行了几个进程,但由于某种原因,它们超出了线程堆栈大小. 例如,Java进程在启动时在运行时被赋予-Xss256k的堆栈大小,并且在实际代码中使用pthread_attr_set ...
最新文章
- Web渗透测试(sql注入 access,mssql,mysql,oracle,)
- 文件寄生——寄生虫自体繁衍的道路
- 类型的方法,以及关于Stringbuffer和String builder的相关补充
- Python 机器学习 随机森林 天气最高温度预测任务(二)
- 华为关于gvrp 的配置,一般步骤以及应用。
- 记某站被搜索引擎入侵
- 2021年阿里笔试题分享——大数相加(附源码)
- 谈谈杭州市未来15年城市发展重点和杭州第二机场位置预测
- 硬件基础之继电器互锁工作原理
- PDF打开时显示“正在准备文档以供阅读
- 通向大规模医疗知识图谱:万字详解天衍实验室知识图谱对齐技术
- 品质担当,有效提升办公生产力,永艺XY人体工学椅开箱实测
- 解决javaWeb图片加载不出来问题的方案
- 命名时取代基优先顺序_烷烃的系统命名
- Docker学习笔记1-初识Docker
- spa项目开发首页导航左侧菜单
- 数据密集型系统设计:索引及存储(B树、LSM树、OLTP及OLAP)
- 拼多多是PHP还是java,应届程序员收到拼多多offer 表情瞬间爆发
- 宝塔服务器源代码修改记录,宝塔BT面板修改相关记录,所有插件免费用
- ANSYS workbench的模态分析基本原理和步骤