`
linuxgao
  • 浏览: 76150 次
社区版块
存档分类
最新评论

创建线程是内存溢出

阅读更多
app情况:web应用下开启一个新的线程A,在线程A中又创建了线程B
在B.start()后,A有个sleep(10000),此时报错。
报错时其他业务能顺利执行,jvm heap未满。
系统启动后几天一直是好的,运行4、5天后就会出现这个现象

异常如下:
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start(Native Method)


修改java内存参数后10天没有出现这个问题
原来是
-Xms1236m -Xmx1236m -XX:PermSize=128m

修改后是
-Xms1236m -Xmx1576m 


参考资料:
http://forums-beta.sun.com/thread.jspa?threadID=605782&messageID=3360044
http://www.javagg.com/diary/67493528
http://www.velocityreviews.com/forums/t131216-linux-javalangoutofmemoryerror-unable-to-create-new-native-thread.html
http://forums.sun.com/thread.jspa?threadID=5341026
http://www.herongyang.com/java/Thread-Group-Memory-Leak-with-Unstarted-Threads.html
http://topic.csdn.net/u/20080222/21/880253ba-d9a7-4ec8-a8ee-6821eb9563c0.html
分享到:
评论
3 楼 jiqing0311 2014-03-02  
修改后是
Java代码 
1.-Xms1236m -Xmx1576m 

楼主,请教一下,如果不设置PermSize区的大小,默认值是多少,它会自动增长吗
2 楼 linuxgao 2009-03-27  
感谢回复!
操作系统的相关参数是早就调整过了。
现在是怀疑线程没有正常推出,有残留部分没能垃圾回收。
考虑可能是run()中需要获取数据库连接,在系统压力大的时候获取dbc失败,会不会导致线程没能正常销毁。
1 楼 yangxiaoxiaopro 2009-03-27  
这个曾经碰到过,细节记忆不清了,但似乎是通过调整操作系统中的线程相关参数解决的。
如果出现线程数目,我感觉大部分的情况是线程有创建无销毁,或者说线程没有按规矩完成任务后自己退出。系统启动时正常,长期运行后溢出就更像这个情况了,建议查查线程创建和退出的代码。

相关推荐

    内存溢出配置,内存溢出配置

    内存溢出是指程序运行时,申请的内存空间超过了系统能够提供的最大值,导致程序无法继续执行下去的现象。在Java中,主要分为堆内存溢出(Heap Space OutOfMemoryError)和永久代/元空间溢出(PermGen/MethodArea ...

    介绍堆栈,线程 如何解决内存溢出

    内存溢出是指程序在运行过程中请求的内存超过了系统分配的内存,导致程序崩溃或者系统性能下降。在处理内存溢出问题时,有以下几个策略: 1. **优化数据结构**:选择更高效的数据结构可以减少内存消耗,例如使用...

    解决jetty8内存溢出版本

    标题中的"解决jetty8内存溢出版本"意味着我们面对的是一个针对Jetty 8的特殊构建或配置,其目标是优化内存使用,防止或减少内存溢出的发生。在32位和64位操作系统上都能安装为服务,这意味着这个版本考虑到了兼容性...

    内存溢出解决

    - **栈内存溢出**:每个线程都有自己的栈,如果线程请求栈深度超过虚拟机所允许的最大深度,也会导致栈溢出。 ##### 3. **诊断工具** 为了更准确地定位问题,开发者可以借助多种工具进行诊断: - **VisualVM**:...

    易语言内存配置项[线程安全、高效读写、防溢出]

    在易语言中,可以通过以下几种方式来防止内存溢出: 1. 使用动态内存分配函数:易语言提供了如`创建内存块`、`扩展内存块`等函数,允许程序在运行时按需分配和释放内存,避免静态分配导致的浪费和溢出风险。 2. ...

    到底一个线程占用多少内存

    线程是操作系统调度的基本单位,它在执行程序的过程中扮演着重要的角色。理解线程占用的内存对于优化系统性能和管理资源至关...因此,优化线程内存使用时需要综合考虑这些因素,以实现更高效、更节省资源的多线程编程。

    一次使用Eclipse Memory Analyzer分析Tomcat内存溢出

    - **定义**:内存溢出指的是虽然所有对象仍在使用中,但由于 Java 堆空间不足,新对象无法创建。 - **识别**:通过检查 JVM 参数 `-Xmx` 和 `-Xms` 设置的堆大小是否合理,以及是否存在对象生命周期过长等问题。 - *...

    Java内存溢出解决办法

    Java内存溢出问题,全称为Java OutOfMemoryError,是Java开发者经常遇到的运行时异常。内存溢出通常发生在程序运行过程中,系统无法为运行的应用程序分配足够的内存资源,导致程序无法正常执行。理解并解决Java内存...

    java内存溢出解决方案

    解决Java内存溢出问题通常涉及优化内存分配策略、调整JVM参数、减少不必要的对象创建以及使用更有效的数据结构。同时,进行内存分析工具的使用,如VisualVM或MAT,可以帮助定位内存泄漏问题。理解JVM内存模型和垃圾...

    JAVA内存溢出

    JAVA内存溢出 JAVA中OutOfMemoryError(内存溢出)的三种情况及解决办法 Java中的OutOfMemoryError(内存溢出)是一种常见的错误,本文将详细介绍OutOfMemoryError的三种情况及其解决方法。 首先,我们需要了解...

    使用JNA替代JNI调用DLL,并解决内存溢出问题

    ### 使用JNA替代JNI调用DLL,并解决内存溢出问题 #### 问题背景 在项目的开发过程中,常常遇到需要处理二进制流数据并对其进行解析处理的情况。这种情况下,如果上层应用平台采用的是Java开发,而底层算法或数据...

    idea git提交内存溢出后dump文件

    标题中的“idea git提交内存溢出后dump文件”指的是在使用IntelliJ IDEA(简称IDEA)这款流行的Java集成开发环境进行Git操作时遇到了内存溢出的问题,导致系统生成了一个名为`heapDump.hprof`的堆转储文件。内存溢出...

    JVM实战-对象访问与内存溢出异常解析

    2. **掌握Java堆内存溢出异常的测试**:通过编写程序不断地创建对象,直至消耗完所有可用的堆内存,从而触发`OutOfMemoryError`异常。 3. **掌握虚拟机栈和本地方法栈内存溢出异常的测试**:探究如何通过递归调用或...

    cpu利用率过高,内存溢出分析

    在IT领域,CPU利用率过高和内存溢出是两个常见的性能问题,它们可能严重影响系统的稳定性和效率。本篇文章将深入探讨这两个问题,同时提及一个名为"ProblemDiagnosticsLabToolkit.ear"的工具,它可能用于诊断和解决...

    java poi 导入大数据量Excel数据 防止内存溢出处理.zip

    然而,当处理大数据量的Excel文件时,POI可能会导致内存溢出(Out of Memory, OOM),因为默认情况下它会将整个工作簿加载到内存中。为了防止这种问题,我们需要采用优化策略来高效地处理大量数据。 1. **分块读取*...

    jvm内存溢出

    ### JVM内存溢出详解 #### 一、基本概念与理解 **JVM内存溢出**是一种常见的运行时错误,指的是程序在执行过程中因为无法获得足够的内存资源而导致的问题。这种问题通常发生在程序尝试分配超出系统可用内存限制的...

    android双缓冲解决图片内存溢出的问题

    在Android开发中,处理大量的图片资源时,常常会遇到内存溢出(Out Of Memory,简称OOM)的问题。这是因为Android系统为每个应用分配的内存有限,当加载过多或过大的图片时,很容易超出这个限制,导致应用崩溃。为了...

    内存溢出问题修改

    ### 内存溢出问题修改 #### 知识点一:理解内存溢出问题 内存溢出(Out of Memory)是指程序在运行过程中申请的内存超过了系统能提供的最大内存限制时,程序会抛出异常,导致应用崩溃或者无法正常运行。这种现象在...

Global site tag (gtag.js) - Google Analytics