最大线程数
限制该值的因素:
线程堆栈大小——》进程的最大内存——》操作系统位数
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线程堆栈大小间的关系及平衡。
线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时
时出现溢出的可能性更大,如果该值设置过大,就有影响到创建栈的数量,如果是多线程的应用,就会
出现内存溢出的错误.
阅读(5886) | 评论(0) | 转发(0) |