`

JVM可创建的最大线程数

    博客分类:
  • 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 堆栈。除了堆栈空间,每个线程还需要为线程本地存储(thread-local storage)和内部数据结构提供一些本机内存。

 

JVM堆栈大小

-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆 栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。

在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一 个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

 

JVM heap与JVM私有内存、JVM线程堆栈大小间的关系及平衡。

线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时

时出现溢出的可能性更大,如果该值设置过大,就有影响到创建栈的数量,如果是多线程的应用,就会

出现内存溢出的错误.

分享到:
评论

相关推荐

    jvm支持最大线程数简单测试

    jvm支持的最大线程数有一定的限制,包括32位Linux系统可创建的最大pid数(32678)和系统最大可创建的线程数量(/proc/sys/kernel/threads-max)。这些限制可以通过修改系统参数来改变。 6. 应用场景 jvm支持的最大...

    浅谈IBM AIX环境下的Java性能调优

    - **线程管理**:延长线程生命周期,减少创建和销毁。 - **资源竞争**:最小化共享资源的争用。 - **对象生命周期**:减少短生命周期对象的创建。 - **远程方法调用**:避免或优化远程方法调用,如使用回调。 4...

    并发编程实践,全面介绍基础知识、JVM同步原语、线程安全、低级并发工具、线程安全容器、高级线程协作工具、Executor部分等

    - **ThreadPoolExecutor的定制**:可配置核心线程数、最大线程数、任务队列、拒绝策略等。 - **线程的中断与任务的取消**:线程中断标志的使用,以及Future的cancel方法来取消任务。 随着硬件的演进,开发者面临...

    tomcat7安装使用及jvm连接数参数调优

    其中,maxThreads="600" 指定了最大线程数为 600,minSpareThreads="100" 指定了初始化时创建的线程数为 100,maxSpareThreads="500" 指定了一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的 socket 线程,...

    Java面试JVM+多线程重点突破.zip

    理解核心线程数、最大线程数、线程存活时间等参数的意义。 8. **并发工具类**:如Semaphore(信号量)、CountDownLatch(计数器)、CyclicBarrier(回环栅栏)和 Phaser(阶段器)等,它们在多线程编程中提供了灵活...

    JVM-Tomcat线程-数据库连接池设置建议.docx

    建议设置为最大线程数的70%-80%,即 `maxThreads * 0.7-0.8`。 - **`maxConnections`**:最大连接数。建议设置为CPU核心数乘以10再乘以200,即 `maxThreads * 200`。 - **`acceptCount`**:指定当所有可以使用的...

    Dubbo线程模型(结合Linux线程数限制配置的实战经验分享).docx

    3. **使用`ulimit`命令查看和调整限制**:`ulimit -a`可以显示所有资源限制,`ulimit -u`则用于查看或修改用户可创建的最大线程数。调整后,需要重启系统使新设置生效。 4. **注意性能优化**:线程数量并非越多越好...

    多线程、JVM复习&面试&强化训练100题

    例如,核心线程数、最大线程数、工作队列的容量等参数的选择,会影响到应用的性能和资源利用率。 单例模式是一种常见的设计模式,它用于确保一个类只有一个实例,并提供一个全局访问点。单例的实现方法多种多样,如...

    Java虚拟机最多支持多少个线程的探讨

    首先,JVM的最大线程数并不有一个固定的上限,而是由多种因素共同决定的。其中,最重要的是: 1. **硬件资源**:CPU的数量和速度直接影响了JVM能够并发处理的线程数量。多核处理器能同时执行更多的线程,而处理器的...

    JVM内存配置优化

    - **`maxThreads`**:最大线程数,表示服务器可以同时处理的最大并发请求的数量。 - **`minSpareThreads`**:最小空闲线程数,即至少保持的未使用的线程数量。 - **`maxSpareThreads`**:最大空闲线程数,当活动线程...

    jvm 详细介绍,了解jvm各个组成部分和功能

    例如,“iload”表示加载整数到操作数栈,“anewarray”用于创建数组对象,“iand”表示执行整数位与操作等。这些指令构成了 JVM 执行 Java 字节码的基础。 ##### 2.2 JVM 的 CPU 架构 JVM 的 CPU 架构是其指令...

    jvm的基础知识总结

    1. 栈(Stack):每个Java方法在执行时都会创建一个栈帧(Stack Frame)来存储局部变量表、操作数栈、动态链接、方法出口等信息。栈帧随方法调用而创建,随方法结束而销毁,是线程私有的。线程栈的大小可通过-Xss...

    JVM内存空间分配笔记

    Java堆是Java虚拟机所管理的内存中最大的一块,它是所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的是存放对象实例,几乎所有的对象实例都在这里分配内存。 - **特点**: - 线程共享。 - ...

    JVM知识点汇总

    示例如下:在设置最大堆最小堆为20M后,不断在堆中创建OOMObject类的实例对象,如果在while执行结束之前,GCRoots到对象之间有可达路径,垃圾收集器就无法回收这些对象,最终导致内存溢出。 以上就是对JVM内存区域...

    马老师jvm调优实战笔记

    常见的 JVM 参数包括堆内存大小、垃圾回收算法、线程数等。了解 JVM 参数的设置是进行调优的基础。 JVM 调优是 Java 开发者们不可或缺的技能,通过了解 JVM 的结构和工作机制,我们可以更好地进行调优,提高 Java ...

    解析JVM内存结构和6大区域

    在 64 位的操作系统上则没有限制,其大小通过-Xms 和-Xmx 来控制,-Xms 为 JVM 启动时申请的最小 Heap 内存,默认为物理内存的 1/64 但小于 1G,-Xmx 为 JVM 可申请的最大 Heap 内存,默认为物理内存的 1/4。...

    Jvm入门必备手册

    Java 虚拟机 (JVM) 是 Java 开发者不可或缺的一部分,了解 JVM 的工作原理对于优化应用程序性能至关重要。本手册旨在为初学者提供关于 JVM 的基础知识,重点介绍 JVM 内存模型中的关键概念。 #### JVM 内存模型概览...

    JVM虚拟机复习宝典

    每当有一个新的方法被执行,虚拟机会为该方法创建一个新的栈帧,用来存储局部变量表、操作数栈、动态链接、方法出口等信息。当方法执行完毕时,对应的栈帧会被销毁。栈的大小由具体的JVM实现决定,通常在256K至756K...

    JVM 完整深入解析.pdf

    每当一个方法被执行时,Java虚拟机会同步创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。局部变量表存储了方法中使用的局部变量,它们的生命周期与方法的调用和返回严格相关。 #### 本地...

    用三个线程分别计算平均值,最大值,最小值Java

    首先,我们需要创建三个静态类,每个类代表一个线程,分别负责计算平均值、最大值和最小值。在Java中,我们可以使用`Thread`类或`Runnable`接口来创建线程。这里以`Runnable`为例,因为它是更轻量级的选择,可以避免...

Global site tag (gtag.js) - Google Analytics