1.问题描述

每次启动信息报错如下:

2.排查过程

2.1起初怀疑是堆内存不够:

将本地队内存调整由-Xms512M,-Xmx1024M,改成与测试环境相同1536M,还是失败

如上图报错中有notify问题,怀疑notify启动占用线程数过多,增加如下线程限制:

后进行重启测试,发现还是启动报错,排除notify问题

2.2后续怀疑是线程空间占用过大

调整xss 128k

一般说来,Stack Space为128K是够用的。不过既然报错按照160k进行更改,直接报错如下

栈空间溢出。。。放弃此路。。

2.3既然自己机器不行,试试别人机器以及日常环境

日常环境ok,同事eclipse ok (Windows),同事 idea 启动失败(mac)

比较奇怪。。要不要放弃idea。。后排查eclipse启成功以及日常成功原因

日常环境:ulimit -u 显示:131072

mac环境:ulimit -u 显示:709

注: ulimit -u由此可以看出最大线程数差异,也理解了为何mac启动cannot create native thread

备注:可以进行修改,但是根本原因没找到,因此未进行调整

ulimit -u 65535 命令或者直接修改limits.conf文件,将max user process参数修改为65535。

2.4启动后加入HeapDumpOnOutOfMemoryError

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp

并没有任何日志。。。。

3 问题再次思考:到底多少内存,才能合适的创建最多的线程,保证线程够用?

有了以上理论支撑,因此不是堆内存调的越大越好


3 换个思路从头再来

idea 装入java virtualvm插件

http://www.oschina.net/translate/setting-up-visualvm-in-under-5-minutes

真相大白。。。DTS起了1800左右线程。。。

`后沟通dts负责同学,因是并行计算job 执行频率高老的版本没有进行好的线程回收,否则线上也可能会有OOM

因此需要dts版本升级,目前最稳定版本1.6.3`

总结

花了一定精力排查,环境各种折腾jdk升级、tomcat升级,差点从idea转成eclipse,终于水落石出~建议对dts进行升级,避免线上带来不必要的麻烦~

JAVA本地环境启动OOM问题排查的更多相关文章

  1. Java 本地环境设置

    如果你希望在你的本地环境中设置 Java 程序环境,下面的这部分将会指导你在你的本地计算机上下载和设置 Java 环境.你可以按照下面的步骤进行. Java SE 目前是免费下载的,你可以通过单击下面 ...

  2. BUGFIX 09 - 记一次Java中String的split正则表达式匹配 - 引发`OutOfMemoryError: Java heap space`的oom异常 排查及解决 -Java根据指定分隔符分割字符串,忽略在引号里面的分隔符

    问题简述 说白了,Java根据指定分隔符分割字符串,忽略在引号(单引号和双引号)里面的分隔符; oom压测的时候,正则匹配"(?=(?:[^\"]*\"[^\" ...

  3. zk strom 本地环境启动命令

    bin/zkServer.sh statusbin/zkServer.sh startbin/storm nimbus &bin/storm ui &bin/storm drpc &a ...

  4. 本地部署JAVA SE环境

    一.下载安装JDK: 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-doc-downloads-2133158. ...

  5. java虚拟机学习-JVM内存管理:深入Java内存区域与OOM(3)

    概述 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又 ...

  6. JVM内存管理:深入Java内存区域与OOM

    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 概述: 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝 ...

  7. 定制化Azure站点Java运行环境(5)

    Java 8下PermGen及参数设置 在上一章节中,我们定制化使用了Java 8环境,使用我们的测试页面打印出了JVM基本参数,但如果我们自己观察,会发现在MXBeans中,没有出现PermGen的 ...

  8. Jenkins 通过 maven 构建编译 JAVA 项目环境

    Jenkins 通过maven 构建编译 JAVA 项目环境 官网下载合适Jenkins版本包: 1.jenkins http://mirrors.jenkins.io/war-stable/ 2.J ...

  9. JAVA开发环境和IntelliJ工具安装

    在本地开发机中进行web项目的开发,部署到生产环境进行产品发布时,需要将web应用的文件打包成war包,War包可以放在Tomcat下的webapps或者word目录下,随着tomcat服务器的启动, ...

随机推荐

  1. Libevent 反应堆的初始化

    // 默认情况下new eventbase struct event_base * event_base_new(void) { struct event_base *base = NULL; //初 ...

  2. mysql的explain

    explain 一般用于分析sql.  如下 [SQL] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 2 ...

  3. mysql读写分离的操作动作依据(读写分离基本依据)

    读的操作: 1.select 2.show 3.explain explain显示了MySQL如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 4.desc ...

  4. iOS 视频直播弹幕的实现

    弹幕,并不是一个多么复杂的功能. 1.弹幕的实现性分析 首先,从视觉上明确当前弹幕所具有的功能 从屏幕右侧滑入左侧,直至完全消失 不管是长的弹幕,还是短的弹幕,速度一致(可能有的需求是依据弹幕长度,调 ...

  5. extr_shopping

    __author__ = 'ZZG' # noinspection PyCallingNonCallable shopping_list =[ ("iphone",5300), ( ...

  6. Chromium与CEF的多进程模型及相关參数

    CEF基于Chromium,也是多进程模型.关于进程模型.參考这里:https://www.chromium.org/developers/design-documents/process-model ...

  7. cocos2dx-3.0(14)------SpriteBatchNode与SpriteFrameCache加快渲染

    ----我的生活,我的点点滴滴! ! 大家都知道一个游戏里面会有大量的图片.每一个图片渲染是须要时间的,以下分析两个类来加快渲染速度.加快游戏执行速度 一.SpriteBatchNode 1.先说下渲 ...

  8. Unity游戏中使用贝塞尔曲线

    孙广东   2015.8.15 比方在3D rpg游戏中.我们想设置弹道,不同的轨迹类型! 目的:这篇文章的主要目的是要给你关于在游戏怎样使用贝塞尔曲线的基本想法. 贝塞尔曲线是最主要的曲线,一般用在 ...

  9. 第03章-VTK系统概述(1)

    [译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934- ...

  10. HDU1598 find the most comfortable road 【并查集】+【枚举】

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...