千家信息网

OutOfMemoryError无法创建新的本机线程怎么办

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章给大家介绍OutOfMemoryError无法创建新的本机线程怎么办,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。可能需要调整操作系统和tomcat jvm参数同时调整才
千家信息网最后更新 2026年11月04日OutOfMemoryError无法创建新的本机线程怎么办

这篇文章给大家介绍OutOfMemoryError无法创建新的本机线程怎么办,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。

这种现象比较少见,也比较奇怪,主要是和jvm与系统内存的比例有关。
这种怪事是因为JVM已经被系统分配了大量的内存(比如1.5G),并且它至少要占用可用内存的一半。有人发现,在线程个数很多的情况下,你分配给JVM的内存越多,那么,上述错误发生的可能性就越大。
每一个32位的进程最多可以使用2G的可用内存,因为另外2G被操作系统保留。这里假设使用1.5G给JVM,那么还余下500M可用内存。这500M内存中的一部分必须用于系统dll的加载,那么真正剩下的也许只有400M,现在关键的地方出现了:当你使用Java创建一个线程,在JVM的内存里也会创建一个Thread对象,但是同时也会在操作系统里创建一个真正的物理线程(参考JVM规范),操作系统会在余下的400兆内存里创建这个物理线程,而不是在JVM的1500M的内存堆里创建。在jdk1.4里头,默认的栈大小是256KB,但是在jdk1.5里头,默认的栈大小为1M每线程,因此,在余下400M的可用内存里边我们最多也只能创建400个可用线程。
这样结论就出来了,要想创建更多的线程,你必须减少分配给JVM的最大内存。还有一种做法是让JVM宿主在你的JNI代码里边。
给出一个有关能够创建线程的最大个数的估算公式:
(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads
对于jdk1.5而言,假设操作系统保留120M内存:
1.5GB JVM: (2GB-1.5Gb-120MB)/(1MB) = ~380 threads
1.0GB JVM: (2GB-1.0Gb-120MB)/(1MB) = ~880 threads
在2000/XP/2003的boot.ini里头有一个启动选项,好像是:/PAE /3G ,可以让用户进程最大内存扩充至3G,这时操作系统只能占用最多1G的虚存。那样应该可以让JVM创建更多的线程。
因此这种情况需要结合操作系统进行相关调整。
因此:我们需要结合不同情况对tomcat内存分配进行不同的诊断才能从根本上解决问题

关于OutOfMemoryError无法创建新的本机线程怎么办就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

内存 线程 系统 操作系统 更多 分配 最大 情况 调整 怎么办 本机 不同 个数 内容 同时 大小 是在 物理 进程 参考 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 为想互联网科技怎么样 科技互联网公司装修 河南真二互联网科技有限公司 高科技与互联网 科技互联网创业计划书 互联网科技咨询 科技伦理 互联网公司 济南华为互联网科技产业总部基地 央行互联网金融科技公司 字节跳动和互联网科技 互联网科技公司有风险吗 恒生互联网科技指数跳水 江苏苏星互联网科技有限公司 产业互联网科技服务公司 广州百诚互联网科技有限公司官网 互联网安防科技感 信承诺互联网科技有限公司 互联网科技企业商标注意事项 互联网时代高科技布局 互联网科技园 互联网核心科技是什么 互联网科技公司怎么样 百单互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 互联网大会黑科技排名 互联网科技产业特征 互联网科技研发水平 六子台科技互联网展会 株洲百竞科技的互联网营销顾问
0