进程可创建的最大线程数

最大线程数
 
限制该值的因素:
线程堆栈大小——》进程的最大内存——》操作系统位数
 
linux线程
 
查看默认的线程栈大小
ulimit -a
 
调整栈大小
ulimit -s
 
是否存在硬限制, /proc/sys/kernel/threads-max是否为硬限制?
cat   /proc/sys/kernel/threads-max: ?
echo   12000   >   /proc/sys/kernel/thread_max 
 
 
JVM线程
 
JVM线程堆栈
 应用程序中的每个线程都需要内存来存储器堆栈(用于在调用函数时持有局部变量并维护状态的内存区域)。每个 Java 线程都需要堆栈空间来运行。
 根据实现的不同,Java 线程可以分为本机线程和 Java 堆栈。除了堆栈空间,每个线程还需要为线程本地存储(thread-local storage)和内部数据结构提供一些本机内存。
 
JVM堆栈大小
-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆 栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。
在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一 个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
 
JVM heap与JVM私有内存、JVM线程堆栈大小间的关系及平衡。
线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时
时出现溢出的可能性更大,如果该值设置过大,就有影响到创建栈的数量,如果是多线程的应用,就会
出现内存溢出的错误.
如果本身不需要创建太多的线程,但是还是义无返顾的出现了java.lang.OutOfMemoryError: unable to create new native thread  那么肯定是线程没关掉
在Linux下,进程最大最大线程以及进程打开的文件都是由内核参限制的。这些参可以通过/sys文件系统中的文件进行查看和修改。 1. 进程最大 进程最大指系统中最多可以同时存在的进程量。在Linux中,可以通过以下命令查看当前系统中进程最大的大小: ``` $ cat /proc/sys/kernel/pid_max ``` 默认情况下,进程最大是32768。如果需要修改该参的值,可以通过以下命令进行修改: ``` $ echo [new_max_pid] > /proc/sys/kernel/pid_max ``` 2. 最大线程 最大线程指单个进程可以创建最大线程量。在Linux中,可以通过以下命令查看当前系统中最大线程的大小: ``` $ cat /proc/sys/kernel/threads-max ``` 默认情况下,最大线程是131072。如果需要修改该参的值,可以通过以下命令进行修改: ``` $ echo [new_max_threads] > /proc/sys/kernel/threads-max ``` 3. 进程打开的文件 进程打开的文件指单个进程可以同时打开的最大文件量。在Linux中,可以通过以下命令查看当前系统中进程打开的文件的大小: ``` $ cat /proc/sys/fs/file-max ``` 默认情况下,进程打开的文件是1048576。如果需要修改该参的值,可以通过以下命令进行修改: ``` $ echo [new_max_files] > /proc/sys/fs/file-max ``` 需要注意的是,修改这些参可能会影响系统的稳定性和性能。建议在修改之前仔细评估修改的影响,并备份相关配置文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值