linux多线程默认栈大小和最大线程数
linux的线程栈大小可以使用ulimit -s查看,对于ubunt 2.6的内核线程栈的默认大小为8M,如下:
shine@shine-bupt:~/Program/C$ ulimit -s
8192
32位的系统,虚拟内存空间是4G,其中1G是内核空间用户不可见,真正可以使用的内存空间大小是3G,具体参加下表:
Linux的内存模型,一般为:
| 
 地址  | 
 作用  | 
 说明  | 
| 
 >=0xc000 0000  | 
 内核虚拟存储器  | 
 用户代码不可见区域  | 
| 
 <0xc000 0000  | 
 Stack(用户栈)  | 
 ESP指向栈顶  | 
| 
 ↓ ↑  | 
 空闲内存  | 
|
| 
 >=0x4000 0000  | 
 文件映射区  | 
|
| 
 <0x4000 0000  | 
 ↑  | 
 空闲内存  | 
| 
 Heap(运行时堆)  | 
 通过brk/sbrk系统调用扩大堆,向上增长。  | 
|
| 
 .data、.bss(读写段)  | 
 从可执行文件中加载  | 
|
| 
 >=0x0804 8000  | 
 .init、.text、.rodata(只读段)  | 
 从可执行文件中加载  | 
| 
 <0x0804 8000  | 
 保留区域  | 
也就是说用户可使用的内存空间就是0x00000000~0xc0000000的大小,这个空间的大小刚好是3G。
那么进程中能创建的最大线程数就会受默认线程栈的大小限制,假设线程数N,则N*8M < 3*1024M一定要成立。
linux多线程默认栈大小和最大线程数的更多相关文章
- Linux 平台如何查看某个进程的线程数?
		
Linux 平台如何查看某个进程的线程数? 三种方法:1. 使用top命令,具体用法是 top -H 加上这个选项,top的每一行就不是显示一个进程,而是一个线程. 2. 使用ps命令,具体用法是 ...
 - 《Linux多线程服务端编程》笔记——线程同步精要
		
并发编程基本模型 message passing和shared memory. 线程同步的四项原则 尽量最低限度地共享对象,减少需要同步的场合.如果确实需要,优先考虑共享 immutable 对象. ...
 - Linux ulimit和动态修改MySQL最大线程数限制
		
ulimit是限制进程对资源的使用但软件资源限制变化不大,特别是process/file,分别对应nproc和nofilenproc可用 ulimit -u 查询:nofile可用 ulimit -n ...
 - Linux下修改当前用户的最大线程数和 open files
		
1 查看当前用户的线程 ulimit -a 2 修改配置文件 vi /etc/security/limits.d/90-nproc.conf 3 改完即可生效 4 修改可打开的最大文件数 vi /e ...
 - linux查看修改线程默认栈空间大小(ulimit -s)
		
linux查看修改线程默认栈空间大小 ulimit -s 1.通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下 为10240 即10M 2.通过命令 ulimit -s 设置大 ...
 - 更改Linux默认栈空间的大小
		
有时候在Linux写C++程序处理大量的数据,程序内部需要分配很大的数组来存放一些数据,但有时候分配的数组太大的话运行时会出现段错误.这种情况可能是分配的数组大小超过了Linux系统的默认栈空间的大小 ...
 - 关于Linux x64 Oracle JDK7u60 64-bit HotSpot VM 线程栈默认大小问题的整理
		
JVM线程的栈默认大小,oracle官网有简单描述: In Java SE 6, the default on Sparc is 512k in the 32-bit VM, and 1024k in ...
 - LINUX最大线程数及最大进程数
		
查看最大线程数: cat /proc/sys/kernel/threads-max ulimit User limits - limit the use of system-wide resource ...
 - (转)linux下进程的进程最大数、最大线程数、进程打开的文件数和ulimit命令修改硬件资源限制
		
ulimit命令查看和更改系统限制 ulimit命令详解 ulimit用于shell启动进程所占用的资源,可以用来设置系统的限制 语法格式 ulimit [-acdfHlmnpsStvw] [size ...
 
随机推荐
- HTTP请求常用状态码
			
常见的http请求响应的状态码 一些常见的状态码为: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状 ...
 - python基础之字符编码(一)
			
一.什么是字符编码 计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电压(高低压即二进制数1,低电压即二进制数0),也就是说计算机只认识数字 编程的目的是让计算机干活,而 ...
 - Android 进阶12:进程通信之 Socket (顺便回顾 TCP UDP)
			
不要害怕困难,这是你进步的机会! 读完本文你将了解: OSI 七层网络模型 TCPIP 四层模型 TCP 协议 TCP 的三次握手 TCP 的四次挥手 UDP 协议 Socket 简介 Socket ...
 - Js事件处理模型/周期
			
有3个阶段 1. 捕获阶段:由外向内,记录各级父元素上绑定的事件处理函数---只记录,不触发. 2. 目标触发:优先触发目标元素上的事件处理函数. 3. 冒泡:由内向外,按捕获的顺序的相反的方向 ...
 - Ubuntu+Rmarkdown的中文slides实现(附GitHub template)
			
这两天要做毕业论文的答辩slides,搜Rmarkdown中文slides的时候百度到了自己两年前的博客 R+markdown+LaTeX 中文编译解决方案.讲真我一开始还真没有认出来,一看这文风和博 ...
 - [STM32]HardFault 定位办法
			
网上关于HardFault的定位办法好多,试到了其中一种可行的 http://www.cnblogs.com/Ilmen/p/3356147.html 特此纪录.
 - MyBatis对多关系:显示该用户的所有角色
			
只要在一边的UserMapper.xml 配置好就可以了 <?xml version="1.0" encoding="UTF-8" ?> <! ...
 - Freemarker 自定义标签 实现TemplateDirectiveModel
			
1 自定义标签需要实现TemplateDirectiveModel这个接口中的execute方法 实例代码如下 public class UserListDirective implements Te ...
 - linux 本地账号密码无法登陆(shell可以登录),一直返回 登陆的login界面
			
今天我在我虚拟机测试的时候遇到了一个问题.登陆centos一直是返回login,账号和密码没错,我也换了两个用户. 1.问题描述 我正常的输入用户名和密码 错误提示截图:返回登陆界面,我重新试了另外的 ...
 - [Err] 1067 - Invalid default value for 'xxxTime'
			
下面是导入sql脚本的的局部脚本 `xxxTime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 发现是NO_ZERO_IN_DATE,NO_Z ...