2014-5-22 java.lang.OutOfMemoryError: Java heap space的一次诊断

收到消息某系统一个节点由于内存溢出而宕机,系统的中间件是weblogic,数据库的oracle。

1. 先用IBM  HeapAnalyzer分析内存溢出时的dump文件,找到占用内存最多的请求,然后看代码。

2. 在走查代码发现,此类中的方法都特别简单,对单表的增删改查,有查询的地方都是非常简单,不会有操作大数据的情况,这样就排除了数据库方面的问题。

3. 继续走查这个类,发现此类中初始化的时候就创建了16个类,这16个类中又创建了其他的类,揣测此次的内存溢出就是它产生的,需要证明。

4.用jconsole连接weblogic,找到相应的一个功能,连续按保存按钮10次,发现内存涨了300多M,确定就是这个问题,在并发的情况下就会出问题。

5. 改进方法:少做事的原则,把不用的调用去掉,然后把一些类放到方法中降低其作用域。

本次事件让我想到为什么不能有非常大的类存储,还有嵌套非常多的调用,写代码的方便和性能一定要有个平衡。

2014-5-22 java.lang.OutOfMemoryError: Java heap space的一次诊断

时间: 2024-10-08 05:23:00

2014-5-22 java.lang.OutOfMemoryError: Java heap space的一次诊断的相关文章

排查sqoop报错:Error running child : java.lang.OutOfMemoryError: Java heap space

报错栈: 2017-06-16 19:50:51,002 INFO [main] org.apache.hadoop.mapred.MapTask: Processing split: 1=1 AND 1=1 2017-06-16 19:50:51,043 INFO [main] org.apache.sqoop.mapreduce.db.DBRecordReader: Working on split: 1=1 AND 1=1 2017-06-16 19:50:51,095 INFO [mai

eclipse使用hadoop插件出现java.lang.OutOfMemoryError: Java heap space

14/09/20 22:41:13 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 14/09/20 22:41:13 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applicati

解决Scala异常处理java.lang.OutOfMemoryError: Java heap space error

需求:百万.千万.4千万级日志对设备进行除重环境:设备内存64G,scala单机版运行shell文件日志:20G 48000000.log4.0G 10000000.log396M 1000000.log 代码如下 帮助 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 import scala.io.Source import scala.collection.mutable.ArrayBuffer var te

Tomcat 优化 java.lang.OutOfMemoryError: Java heap space 的解决方法

java.lang.OutOfMemoryError: Java heap space 的解决方法 关键字: tomcat outofmemoryerror permgen space java heap space 最近在熟悉一个开发了有几年的项目,需要把数据库从mysql移植到oracle,首先把jdbc的连接指向mysql,打包放到tomcat里面,可以跑起来,没有问题,可是当把jdbc连接指向oracle的时候,tomcat就连续抛java.lang.OutOfMemoryError的错

java.lang.OutOfMemoryError: Java heap space解决办法

//首先检查程序有没有限入死循环 这个问题主要还是由这个问题 java.lang.OutOfMemoryError: Java heap space 引起的.第一次出现这样的的问题以后,引发了其他的问题.在网上一查可能是JAVA的堆栈设置太小的原因. 跟据网上的答案大致有这两种解决方法: 1.设置环境变量 解决方法:手动设置Heap size 修改TOMCAT_HOME/bin/catalina.sh set JAVA_OPTS= -Xms32m -Xmx512m 可以根据自己机器的内存进行更改

从[java.lang.OutOfMemoryError: Java heap space]中恢复

出现java.lang.OutOfMemoryError: Java heap space的错误要么是程序问题,要么就是分配给JVM的内存确实不够. 一般来说都是可以事前可控解决的. 但是如果不可控的情况,例如使用第三方包,或者系统抽筋,就会抛出OutOfMemoryError错误.OH NO,根据不会抛出来,当前线程直接挂掉. 既然都挂掉了,谈什么恢复?而且挂掉也不只是OutOfMemoryError的问题. 一般情况下,OutOfMemoryError在不可控的情况下,真的真的真的不需要处理

Eclipse运行程序提示:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

问题描述: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 问题原因: 程序中对象引用过多导致堆空间不足,导致内存溢出 解决方案: (增大Java虚拟机的内存空间) 打开Eclipse,选择"Run" - "Run Configurations" - "(x)=Arguments",VM arguments栏中填写 -Xmx800m

解决sqoop报错:java.lang.OutOfMemoryError: Java heap space

报错栈: 2017-06-15 16:24:50,449 INFO [main] org.apache.sqoop.mapreduce.db.DBRecordReader: Executing query: select "CTJX60","CTJX61","CTJX62","CTJX63","CTJX64","CTJX65","CTJX66","CTJX6

java.lang.OutOfMemoryError: PermGen space PermGen space & java.lang.OutOfMemoryError: Java heap space Heap siz

java.lang.OutOfMemoryError: PermGen space PermGen space 由-XX:PermSize  -XX:MaxPermSize 引起 java.lang.OutOfMemoryError: Java heap space Heap siz 由-Xms -Xmx 引起 Liunx下修改:catalina.sh # OS specific support.  $var _must_ be set to either true or false. JAVA

Exception in thread "HSQLDB Connection @429be9" java.lang.OutOfMemoryError: Java heap space

Exception in thread "HSQLDB Connection @429be9" java.lang.OutOfMemoryError: Java heap space 在服务器下的data/xxxx也就是数据库路径下,我的在F:\tomcat7\bin\data下删掉关于xxxx的文件及文件夹. Exception in thread "HSQLDB Connection @429be9" java.lang.OutOfMemoryError: Ja