Jprofile如何看JVM堆栈内存溢出

问题描述

windows任务管理器里看java内存只增不减

解决方案

解决方案二:
楼主是不是在线程池里用ibatis之类的了?
解决方案三:
我觉得你主要得看下几个linkedlist里面怎么回事。
解决方案四:
Toskgary:业务就是读取CSV文件大量数据,最终走Mybatis向数据库批量插入数据。观察任务管理器内存只增不减,而用Jprofile观察各个Class类对象内存变化并不是一直递增,还请教这种现象,利用Jprofile该如何操作才能定位问题所在之处?谢谢。
解决方案五:
引用3楼qq_20047493的回复:

Toskgary:业务就是读取CSV文件大量数据,最终走Mybatis向数据库批量插入数据。观察任务管理器内存只增不减,而用Jprofile观察各个Class类对象内存变化并不是一直递增,还请教这种现象,利用Jprofile该如何操作才能定位问题所在之处?谢谢。

实在不好意思,jprofile不太懂。我意思是,你想办法把几个list里面的内容点开来看看,看看这些东西是不是仍然在用,是不是和你占的内存有关系。
解决方案六:
[ohms]2014-08-2714:22:46[com.iswoo.ohms.parsefile.ExtractData.extractPerfDataFromCSV](189)-[INFO]同时读取多个性能指标文件进行操作,已扫描CSV文件记录2000行.[ohms]2014-08-2714:33:32[com.iswoo.ohms.parsefile.ExtractData.extractPerfDataFromCSV](261)-[INFO][LU]CSV文件第2889行列标题.[ohms]2014-08-2714:35:12[com.iswoo.ohms.parsefile.ExtractData.extractPerfDataFromCSV](189)-[INFO]同时读取多个性能指标文件进行操作,已扫描CSV文件记录3000行.[ohms]2014-08-2714:42:33[com.iswoo.ohms.orm.GenericDAOImpl.insert](58)-[ERROR]excutecom.iswoo.ohms.dao.impl.mappers.AssetPerfDataMapper.insertLUPerfDataBatchtoinsertdataexception,condition[128个实体对象]org.mybatis.spring.MyBatisSystemException:SqlSessionoperation;nestedexceptionisjava.lang.OutOfMemoryError:Javaheapspaceatorg.mybatis.spring.SqlSessionTemplate.wrapException(SqlSessionTemplate.java:250)atorg.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:137)atorg.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:117)atorg.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:190)atcom.iswoo.ohms.orm.GenericDAOImpl.insert(GenericDAOImpl.java:55)atcom.iswoo.ohms.dao.impl.AssetPerfDataDaoImpl.insertLUPerfDataBatch(AssetPerfDataDaoImpl.java:176)atcom.iswoo.ohms.parsefile.ExtractData.insertPerf(ExtractData.java:602)atcom.iswoo.ohms.parsefile.ExtractData.extractPerfDataFromCSV(ExtractData.java:267)atcom.iswoo.ohms.parsefile.ImportPerfDataJob.execute(ImportPerfDataJob.java:65)atorg.quartz.core.JobRunShell.run(JobRunShell.java:216)atorg.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)Causedby:java.lang.OutOfMemoryError:Javaheapspaceatjava.util.regex.Pattern$BnM.optimize(Pattern.java:5394)atjava.util.regex.Pattern.compile(Pattern.java:1410)atjava.util.regex.Pattern.<init>(Pattern.java:1124)atjava.util.regex.Pattern.compile(Pattern.java:817)atjava.lang.String.replaceFirst(String.java:1967)atorg.apache.ibatis.builder.xml.dynamic.ForEachSqlNode$FilteredDynamicContext$1.handleToken(ForEachSqlNode.java:120)atorg.apache.ibatis.parsing.GenericTokenParser.parse(GenericTokenParser.java:25)atorg.apache.ibatis.builder.xml.dynamic.ForEachSqlNode$FilteredDynamicContext.appendSql(ForEachSqlNode.java:125)atorg.apache.ibatis.builder.xml.dynamic.TextSqlNode.apply(TextSqlNode.java:19)atorg.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:14)atorg.apache.ibatis.builder.xml.dynamic.ForEachSqlNode.apply(ForEachSqlNode.java:55)atorg.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:14)atorg.apache.ibatis.builder.xml.dynamic.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:22)atorg.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:198)atorg.apache.ibatis.executor.statement.BaseStatementHandler.<init>(BaseStatementHandler.java:45)atorg.apache.ibatis.executor.statement.PreparedStatementHandler.<init>(PreparedStatementHandler.java:16)atorg.apache.ibatis.executor.statement.RoutingStatementHandler.<init>(RoutingStatementHandler.java:27)atorg.apache.ibatis.session.Configuration.newStatementHandler(Configuration.java:227)atorg.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:27)atorg.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:73)atorg.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:43)atorg.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:102)atorg.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:91)atorg.mybatis.spring.SqlSessionTemplate$4.doInSqlSession(SqlSessionTemplate.java:192)atorg.mybatis.spring.SqlSessionTemplate$4.doInSqlSession(SqlSessionTemplate.java:191)atorg.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:135)atorg.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:117)atorg.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:190)atcom.iswoo.ohms.orm.GenericDAOImpl.insert(GenericDAOImpl.java:55)atcom.iswoo.ohms.dao.impl.AssetPerfDataDaoImpl.insertLUPerfDataBatch(AssetPerfDataDaoImpl.java:176)atcom.iswoo.ohms.parsefile.ExtractData.insertPerf(ExtractData.java:602)atcom.iswoo.ohms.parsefile.ExtractData.extractPerfDataFromCSV(ExtractData.java:267)[ohms]2014-08-2714:42:33[com.iswoo.ohms.utils.ExceptionUtils.logErrorAndThrowException](48)-[ERROR]sqlStatement:com.iswoo.ohms.dao.impl.mappers.AssetPerfDataMapper.insertLUPerfDataBatch----parameter:[128个实体对象][ohms]2014-08-2714:42:33[com.iswoo.ohms.parsefile.ExtractData.insertPerf](606)-[ERROR]com.iswoo.ohms.exceptions.DAOBaseException:sqlStatement:com.iswoo.ohms.dao.impl.mappers.AssetPerfDataMapper.insertLUPerfDataBatch----parameter:[128个实体对象][ohms]2014-08-2714:42:34[com.iswoo.ohms.orm.GenericDAOImpl.insert](58)-[ERROR]excutecom.iswoo.ohms.dao.impl.mappers.AssetPerfDataMapper.insertLUPerfDataBatchtoinsertdataexception,condition[128个实体对象]org.mybatis.spring.MyBatisSystemException:SqlSessionoperation;nestedexceptionisjava.lang.OutOfMemoryError:Javaheapspaceatorg.mybatis.spring.SqlSessionTemplate.wrapException(SqlSessionTemplate.java:250)atorg.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:137)atorg.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:117)atorg.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:190)atcom.iswoo.ohms.orm.GenericDAOImpl.insert(GenericDAOImpl.java:55)atcom.iswoo.ohms.dao.impl.AssetPerfDataDaoImpl.insertLUPerfDataBatch(AssetPerfDataDaoImpl.java:176)atcom.iswoo.ohms.parsefile.ExtractData.insertPerf(ExtractData.java:602)atcom.iswoo.ohms.parsefile.ExtractData.extractPerfDataFromCSV(ExtractData.java:267)atcom.iswoo.ohms.parsefile.ImportPerfDataJob.execute(ImportPerfDataJob.java:65)atorg.quartz.core.JobRunShell.run(JobRunShell.java:216)atorg.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)Causedby:java.lang.OutOfMemoryError:Javaheapspaceatcom.ibm.db2.jcc.c.gb.b(gb.java:1544)atcom.ibm.db2.jcc.c.jb.Rc(jb.java:3096)atcom.ibm.db2.jcc.c.jb.b(jb.java:2873)atcom.ibm.db2.jcc.c.jb.b(jb.java:2788)atcom.ibm.db2.jcc.c.jb.a(jb.java:2652)atcom.ibm.db2.jcc.c.jb.b(jb.java:2543)atcom.ibm.db2.jcc.c.jb.a(jb.java:2468)atcom.ibm.db2.jcc.c.jb.a(jb.java:169)atcom.ibm.db2.jcc.c.jb.b(jb.java:78)atcom.ibm.db2.jcc.c.w.b(w.java:60)atcom.ibm.db2.jcc.c.dc.c(dc.java:331)atcom.ibm.db2.jcc.b.tf.db(tf.java:1746)atcom.ibm.db2.jcc.b.tf.gb(tf.java:1817)atcom.ibm.db2.jcc.b.tf.d(tf.java:2298)atcom.ibm.db2.jcc.b.tf.Z(tf.java:1331)atcom.ibm.db2.jcc.b.tf.execute(tf.java:1315)atcom.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:989)atorg.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:22)atorg.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:51)atorg.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:29)atorg.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:73)atorg.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:43)atorg.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:102)atorg.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:91)atorg.mybatis.spring.SqlSessionTemplate$4.doInSqlSession(SqlSessionTemplate.java:192)atorg.mybatis.spring.SqlSessionTemplate$4.doInSqlSession(SqlSessionTemplate.java:191)atorg.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:135)atorg.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:117)atorg.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:190)atcom.iswoo.ohms.orm.GenericDAOImpl.insert(GenericDAOImpl.java:55)atcom.iswoo.ohms.dao.impl.AssetPerfDataDaoImpl.insertLUPerfDataBatch(AssetPerfDataDaoImpl.java:176)atcom.iswoo.ohms.parsefile.ExtractData.insertPerf(ExtractData.java:602)
解决方案七:
该回复于2014-09-22 08:44:52被版主删除

时间: 2024-10-23 12:43:43

Jprofile如何看JVM堆栈内存溢出的相关文章

了解Java虚拟机JVM的基本结构及JVM的内存溢出方式_java

JVM内部结构图 Java虚拟机主要分为五个区域:方法区.堆.Java栈.PC寄存器.本地方法栈.下面 来看一些关于JVM结构的重要问题. 1.哪些区域是共享的?哪些是私有的? Java栈.本地方法栈.程序计数器是随用户线程的启动和结束而建立和销毁的, 每个线程都有独立的这些区域.而方法区.堆是被整个JVM进程中的所有线程共享的. 2.方法区保存什么?会被回收吗? 方法区不是只保存的方法信息和代码,同时在一块叫做运行时常量池的子区域还 保存了Class文件中常量表中的各种符号引用,以及翻译出来的

JVM内存区域与内存溢出异常

Java虚拟机在执行java程序时会把它所管理的内存会分为若干个不同的数据区域,不同的区域在内存不足时会抛出不同的异常. >>运行时数据区域的划分 (1)程序计数器 程序计数器(Program Counter Register)是一块比较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器: PCR为线程私有内存,程序计数器是唯一一个在Java虚拟机规范中没有规定任何OOM情况的区域. (2)方法区方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已

Tomcat中JVM内存溢出及合理配置

Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机.Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍. 一.Java JVM内存介绍 JVM管理两种类型的内存,堆和非堆.按照官方的说法:"Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的.""在JVM中堆之外的内存称为非堆内存(Non-heap

求专业人士帮我解决下这个内存溢出的问题,如果确实是jvm和tomcat内存的问题,请说明下设置步骤?

问题描述 求专业人士帮我解决下这个内存溢出的问题,如果确实是jvm和tomcat内存的问题,请说明下设置步骤? 我用myeclipse编写项目,在确认代码无误的情况下,加载到tomcat里运行,结果出现了内存溢出问题,详细异常信息如下: Exception in thread "http-apr-8080-exec-13" java.lang.OutOfMemoryError: Direct buffer memory at java.nio.Bits.reserveMemory(Un

Linux和windows下内存溢出以及修改tomcat的jvm内存

一.内存溢出概述 常见的内存溢出有以下两种: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: Java heap space  ①java.lang.OutOfMemoryError: PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信的,Class在被Loader时就

centos中修改tomcat中JVM非堆内存默认配置解决内存溢出

系统CentOS6.4下yum安装了tomcat6和jdk1.6,安装配置过程如下: http://www.111cn.net/sys/CentOS/72007.htm tomcat中部署两个项目A.B,同时部署时报内存溢出错误,系统CPU负载飙升,而单独部署A.B 和 只部署多个A或者只部署多个B项目系统运行正常. 查看日志报错:OutOfMemoryError: PermGen space-.   查询资料得知:是非堆溢出(永久保存区域溢出) 这种错误常见在web服务器对JSP进行pre c

深入理解JVM之内存区域与内存溢出

文章目录 1. Java内存区域与内存溢出异常 1.1. 运行时数据区域 1.1.1. 程序计数器 1.1.2. java虚拟机栈 1.1.3. 本地方法栈 1.1.4. Java堆(Java Heap) 1.1.5. 方法区 1.1.6. 运行时常量池 1.1.7. 直接内存 1.2. HotSpot虚拟机 1.2.1. 对象的创建 1.2.2. 对象的访问定位 1.3. OOM异常的解决思路 1.4. 参考 Java内存区域与内存溢出异常 运行时数据区域 程序计数器 当前线程所执行的字节码的

jvm内存溢出解决方法(jvm内存溢出怎么解决)_java

java.lang.OutOfMemoryError: PermGen space 发现很多人把问题归因于: spring,hibernate,tomcat,因为他们动态产生类,导致JVM中的permanent heap溢出 .然后解决方法众说纷纭,有人说升级 tomcat版本到最新甚至干脆不用tomcat.还有人怀疑spring的问题,在spring论坛上讨论很激烈,因为spring在AOP时使用CBLIB会动态产生很多类. 但问题是为什么这些王牌的开源会出现同一个问题呢,那么是不是更基础的原

内存溢出的困惑

问题描述 我们的后台项目刚做了数据库连接池和其他的一些优化,但是现在出现一个问题,就是项目一启动,内存不断增大,直到内存溢出.请问这是和什么有关呢?? 解决方案 导致内存溢出的原因有很多,但一般情况不外乎两种:(1) jvm初始化是给的内存太小:(2) 应用程序创建的对象太庞大,使jvm堆栈上升:(3) 查询数据时,因数据量太大,造成内存使用率过高:从楼主给的图片来看,内存到70Mb,tomcat启动是配置的jvm有点小,tomcat默认启动内存为125Mb,一般小型项目应付的了,但是大型项目就