• java.lang.OutOfMemoryError: unable to create new native thread 居然是MQ问题


    问题

    开发环境,之前一直正常,某天突然用tomcat启动项目后时不时报如下错误:

     java.lang.OutOfMemoryError: unable to create new native thread

    环境介绍:

    项目是用的 Eclipse+Tomcat + activeMQ

    activeMQ用的本地的windows版本,黑窗口启动。

    具体这个错误的上面报出的大异常是 JMS Exception。

    因为是用的 spring,所以MQ消息处理部分报错都是先抛出 JMSException,然后往下看才是  内存溢出,不能创建本地线程。

    具体显示异常发生在 MQ接收消息的 监听器中的:  session.createConsumer(session.createQueue(queueName))  以及 onMessage方法中。

    尝试解决无果

    因为 onMessage方法中用了多线程处理业务逻辑,所以一开始 主观认为是  线程创建太多导致的,于是各种百度,找到的方法都是说

    虚拟机内存配置等等。结果各种配置Eclipse都无效,很是郁闷。

    尝试解决正确分析:

    然后和其他同事比较Eclipse等环境配置,首先确保配置一样的情况下,还是一样有问题。

    分析

    出问题的部分代码一直都未改动,之前整个办公环境都是正常的,

    现在同样的代码,同样的环境配置,别人那还不出问题。

    那就有可能是 和其他人不一样的地方出的问题,想到MQ是用的自己本机的,报的错误也是MQ部分的,虽然是在Eclipse中报错,但已经排除了Eclipse环境的问题,那么是不是本机的MQ有问题。

    真正解决方法:

    于是,关掉MQ,找到MQ的目录,查看data目录下的几个log日志文件,发现里面果真都报错了,于是清空data目录下的所有东西,重新去bin目录中启动bat文件。

    在Eclipse中重启项目,问题解决了。

    启示:

    1、大家说的不一定就是对的,百度说的不一定就全面准确,具体问题具体分析很重要。

    2、遇到难以解决的问题,如果百度等通用方法无效,那么要回过头仔细分析 报错的异常提示,注意整个异常的提示,尤其是开头部分,对提示中的多个点都进行分析尝试往往能够找到问题。

    3、找问题还是用一步一步的逐个排除法来缩小范围比较靠谱。【最好有明确的分析 排除 顺序,先排除容易操作的】

    4、除了Eclipse 和项目外,外部依赖的一些其它 小服务 也可能是产生问题的罪魁祸首。

  • 相关阅读:
    ArcMap影像纠偏
    关于ArcGIS动态图层空间内栅格数据,JS前端显示颜色不正确的解决方案
    发布镶嵌数据集,服务端Raster Function制作
    ARCGIS 发布TIF,金字塔文件是否Server自动生成。
    验证航行数据
    解决PLSQL Developer 插入中文 乱码问题
    ArcGIS发布动态空间,并验证
    老丫么老毛桃
    使用IIS建立主机到虚拟机的端口转发
    最大子序列求和算法二三
  • 原文地址:https://www.cnblogs.com/libin6505/p/7851703.html
Copyright © 2020-2023  润新知