JVM线程的栈在64位Linux *** 作系统上的默认大小是多少

JVM线程的栈在64位Linux *** 作系统上的默认大小是多少,第1张

不显式设置-Xss或-XX:ThreadStackSize时,在Linux x64上ThreadStackSize的默认值就是1024KB,给Java线程创建栈会用这个参数指定的大小。这是前一块代码的意思。

如果把-Xss或者-XX:ThreadStackSize设为0,就是使用“系统默认值”。而在Linux x64上HotSpot VM给Java栈定义的“系统默认”大小也是1MB。

所以这个条件下普通Java线程的默认栈大小怎样都是1MB。

(1)栈大小:

32位Windows,一个进程栈的默认大小是1M,在vs的编译属性可以修改程序运行时进程的栈大小

linux下:ulimit -s 查看并修改默认栈空间大小,8M(可使用命令“ulimit -s 字节数”:临时修改栈空间大小)

(2)堆大小

堆的大小理论上 ≈ 进程虚拟空间大小 - 内核虚拟内存大小。

32位windows下,进程的高位2G留给内核,低位2G留给用户,所以进程堆的大小小于2G。

Linux下,进程的高位1G留给内核,低位3G留给用户,所以进程堆大小小于3G。

要设置stack的原因是 linux下进程空间大约是3G 每线程默认8Mstack,这样大概只能启300左右线程就会耗光进程的空间资源 设置每线程 1Mstack,足够启3000 个线程


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8692997.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存