服务器的线程承载量详细的计算推理过程

JVM内存
Stack:栈空间。用于执行代码块的。每一个线程独享一个Stack
Heap:堆空间。用于存储对象的。所有线程共享一个Heap
Method Area:方法区。在JDK1.8中,Hotspot提供的JVM中没有方法区,取而代之是堆内存中的永久代和元空间。用于类信息的/用于存储类的字节码对象的。所有线程共享一个Method Area
Native Stack:本地方法栈。用于执行本地方法的 - 被native修饰的用其他语言完成的方法称之为本地方法。每一个线程独享一个Native Stack
Program Counter:程序计数器。对指令来进行计数的。每一个线程独享一个Program Counter

一台服务器的线程承载量由CPU、内存共同决定,其中内存影响更大
考虑:栈内存、本地方法栈、PC计数器更能影响线程的数量
PC计数器非常小,只占几个字节大小,可以忽略不计
本地方法栈的大小由执行的方法的逻辑和语言决定
栈内存在JDK1.8中规定不能小于128KB

考虑极端情况:忽略PC计数器以及本地方法栈,栈内存按最小来算,这种情况下,一台服务器能够承载多少线程
在JVM中,规定栈内存之和不能超过物理内存的2/3
假设一台服务器的内存条为128G,那么实际使用内存大概在115G
115G*2/3/128K≈628053

实际执行过程中,能否忽略掉本地方法栈? - 不能
那么这个时候算出来的数量就需要至少进行折半
628053 -> 314026
如果执行逻辑复杂,栈内存不是按照最小来算,那么这个数量还得减少

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值