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. 如何搭建一个B2B电商的跨境系统网站?

    国内的B2B跨境电商系统开发定制如何做才符合标准?商家怎么搭建专属的电商供应链系统?目前并不是大多数电商行业的公司可以应对得起组建团队来做,下面分享下大概的建设供应链商城网站思路和步骤(以数商云跨境电 ...

  2. 导入Excel 文件(图片和文字)NPOI+BootStrap fileinput 插件 的结合使用

    1.页面代码: <!DOCTYPE html><html><head> <meta name="viewport" content=&qu ...

  3. 这一次带你彻底了解Cookie

    前言 网络早期最大的问题之一是如何管理状态.简而言之,服务器无法知道两个请求是否来自同一个浏览器.当时最简单的方法是在请求时,在页面中插入一些参数,并在下一个请求中传回参数.这需要使用包含参数的隐藏的 ...

  4. onblur

    HTML onblur 事件属性 HTML 事件属性 实例 当用户离开输入字段时对其进行验证: <input type="text" name="fname&quo ...

  5. Js中for循环的阻塞机制

    Js阻塞机制,跟Js引擎的单线程处理方式有关,每个window一个JS线程.所谓单线程,在某个特定的时刻只有特定的代码能够被执行,并阻塞其它的代码. 由于浏览器是事件驱动的(Event driven) ...

  6. js+画曲线和圆 并限制圆的渲染范围

    通过三个点的坐标可确定一条双曲线. 公式: 1)y=ax^2+bx+c; 2) y=a(x-k)+h; 通过已知三点可确定a,b,c,h,k 2.通过圆心坐标(a,b)和半径r可确定一个圆,和已知的x ...

  7. day7、用户登陆出现-bash-4.1$错误的原因

    有时候在使用用户登陆Linux系统时会出现-bash-4.1$错误,不显示用户名,路径信息. 原因:用户家目录里面与环境变量有关的文件被删除所导致的 .bash_profile .bashrc 这两个 ...

  8. [C#]使用IFormattable接口来实现字符串格式化

    本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 开发工具:VS2017 语言:C# DotNet版本:.Net FrameWork 4.0及以 ...

  9. jquery on()动态绑定元素的的点击事件无反应的问题记录

    1.jquery使用版本:v2.0 2.重现代码: html <table class="table"> <thead> <tr> <th ...

  10. uva11059(最大乘积)

    Problem D - Maximum Product Time Limit: 1 second Given a sequence of integers S = {S1, S2, ..., Sn}, ...