JVM可创建的最大线程数
限制該值的因素:
線程堆棧大小——》進程的最大內存——》操作系統位數
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 堆棧。除了堆??臻g,每個線程還需要為線程本地存儲(thread-local storage)和內部數據結構提供一些本機內存。
?
JVM堆棧大小
-Xss128k:設置每個線程的堆棧大小。JDK5.0以后每個線程堆棧大小為1M,以前每個線程堆棧大小為256K。根據應用的線程所需內存大小進行調整。
在相同物理內存下,減小這個值能生成更多的線程。但是操作系統對一 個進程內的線程數還是有限制的,不能無限生成,經驗值在3000~5000左右。
?
JVM heap與JVM私有內存、JVM線程堆棧大小間的關系及平衡。
線程棧的大小是個雙刃劍,如果設置過小,可能會出現棧溢出,特別是在該線程內有遞歸、大的循環時
時出現溢出的可能性更大,如果該值設置過大,就又影響到創建棧的數量,如果是多線程的應用,就會
出現內存溢出的錯誤.
總結
以上是生活随笔為你收集整理的JVM可创建的最大线程数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 线程池的原理与实现
- 下一篇: 红米k40支持5g吗 号称2021年性价