`

进程可创建的最大线程数

 
阅读更多
最大线程数
 
限制该值的因素:
线程堆栈大小——》进程的最大内存——》操作系统位数
 
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  那么肯定是线程没关掉
分享到:
评论

相关推荐

    【C#】进程中最大线程创建数量分析

    多线程在当今软件开发中应用非常广泛,在实际开发过程中,发现很多不正确...本文将分别研究32位进程和64位进程下,可以创建最大线程数量及资源占用情况,供研发及设计人员参考。 研发环境:Win7 64位,.Net 3.5,VS2010

    auto-node-worker-threads:通过限制每个进程要使用的线程数,根据线程的可用性处理要求,可以使用该模块有效地利用nodeJS中的线程概念。

    Auto-Node-Worker-Threads:(NodeJs Web-Worker库) 通过限制每个进程要使用的线程数,并根据线程的可用性处理需求,该模块可用于有效利用nodeJS中的线程概念。 用户在需要模块时可以维护线程的可用性。 即使工作...

    Nachos实验代码

    设计了两个静态(FCFS,静态优先数),两个动态(动态优先数,彩票算法)。 实验2#进程同步 设计一个Haro样式的条件变量,通过实现采用 该条件变量的生产者消费者问题管程和哲学家 问题管程,用多个使用管程的协作...

    线程池使用介绍用程序可以有多个线程,这些线程在休眠状态中需要耗费大量时间来等待事件发生。其他线程可能进入睡眠状态,并且仅定期被唤醒以轮循更改或更新状态信息,然后再次进入休眠状态

    如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值.超过最大值的线程可以排队,但他们要等到其他线程完成后才启动

    .Net 多线程详解

    • 怎样创建一个线程 • 受托管的线程与 Windows线程 • 前台线程与后台线程 • 名为BeginXXX和EndXXX的方法是做什么用的 • 异步和多线程有什么关联 WinForm多线程编程篇 • 我的多线程WinForm程序老是抛出...

    一个进程池的服务器程序

    当父进程发现请求数 >= 子进程数时,父进程创建新的子进程,并把子进程数加1(当然子进程数有个预先上限);当父进程发现子进程数大于请求数加1时,父进程杀死多余的子进程。 总的来说,思想是让子进程accept并处理...

    5操作系统实验报告.doc

    程,熟练掌握线程的创建pthread_create(),线程终止pthread_exit(),等待线程合 并pthread_join()等线程控制的操作,利用信号量或者互斥锁实现线程间的同步。 二、实验内容 问题:求 100000 个浮点数(精确小数点右 ...

    权威.NET多线程详解(源码示例)

    • 怎样创建一个线程 • 受托管的线程与 Windows线程 • 前台线程与后台线程 • 名为BeginXXX和EndXXX的方法是做什么用的 • 异步和多线程有什么关联 WinForm多线程编程篇 • 我的多线程WinForm程序老是抛出...

    .net 线程详解 基础篇

    * 怎样创建一个线程 * 受托管的线程与 Windows线程 * 前台线程与后台线程 * 名为BeginXXX和EndXXX的方法是做什么用的 * 异步和多线程有什么关联 WinForm多线程编程篇 * 我的多线程WinForm程序老是抛出...

    本项目包括利用多线程、select、poll以及epoll实现的并发处理连接请求

    这两类都要使用到IO多路复用,O多路复用是指单个进程/线程就可以同时处理多个IO请求。有三个方式select、poll、epoll。 select:将文件描述符放入一个集合中,调用select时,将这个集合从用户空间拷贝到内核空间...

    c#进程守护软件-附源码

    对多线程运行的程序,建议设置linecount为100,否则会杀死多余的线程,一个循环周期杀一个,线程数量固定不变的可在配置中设置相同的linecount数,这样能达到守护的目的。 27、加了开机启动参数的支持,在配置文件中...

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

    本文介绍了什么是Java,AIX下的Java版本,Java的性能准则,AIX提供的监视Java的工具,以及如何在AIX用户环境下进行Java应用程序性能调优。

    C++多核高级编程-多进程

    进程和线程之间最大的区别是进程有着自己的地址空间,而线程共享创建它们的进程的地址空间。在将C++任务映射为操作系统能够理解的执行单元时,结果证明线程更易于编程,其主要原因是线程共享相同的地址空间,使得...

    Delphi多线程编程之三 同步读写全局数据

    互斥非常类似于临界区,除了两个关键的区别:首先,互斥可用于跨进程的线程同步。其次,互斥能被赋予一个字符串名字,并且通过引用此名字创建现有互斥对象的附加句柄。 提示临界区与事件对象(比如互斥对象)的最大的...

    Python中尝试多线程编程的一个简明例子

    综述  多线程是程序设计中的一个重要方面,尤其是在服务器Deamon程序方面。无论何种系统,线程调度的开销都比传统的进程要快得多。  Python可以方便地支持多...可以创建多个进程而不是线程,进程数和cpu一样多。  2.

    深入理解python多进程编程

    在进行多进程编程的时候,其实和多线程差不多,在多线程的包threading中,存在一个线程类Thread,在其中有三种方法来创建一个线程,启动线程,其实在多进程编程中,存在一个进程类Process,也可以使用那集中方法来...

    服务器硬件架构(行业文书).doc

    "数 " " " " " "每插座最大线程"8 "12 "16 "16 " "数 " " " " " "MB缓存 (3级) "8 "12 "18 "24 " "最大内存DIMM数"18 "18 "32 "128 " 在本文中,我们将分别从处理器、内存、I/O三大子系统出发,带你一起来梳理和了 ...

    Java并发编程(学习笔记).xmind

    最大线程数,当线程数 >= corePoolSize的时候,会把runnable放入workQueue中 如果队列满了,而且正在运行的线程数量大于或等于 maximumPoolSize,那么线程池会抛出异常,告诉调用者“我不能再接受任务了”...

    精通.Net核心技术原理与构架

    最后围绕.NET中的伪进程应用域和线程这两个基本概念,详细介绍了,NET中进程通信、多线程、异步调用等关键技术。此外本书还有若干章节介绍了.NET框架提供的服务,包括异常处理、特性编程、垃圾回收、多语言编程、...

Global site tag (gtag.js) - Google Analytics