OutOfMemoryError:Java堆空间–分析和解决方法

java.lang.OutOfMemoryError:Java堆问题是在支持或开发复杂的Java EE应用程序时可能会遇到的最复杂的问题之一。
这篇简短的文章将为您提供此JVM HotSpot OutOfMemoryError错误消息的描述,以及在解决该问题之前应如何解决此问题。
有关如何确定要处理的OutOfMemoryError类型的快速帮助指南,请查阅此Blog中的相关文章。 您还将找到有关如何分析JVM堆转储和识别潜在内存泄漏的教程。
java.lang.OutOfMemoryError:Java堆空间–这是什么?
此错误消息通常是在JVM OutOfMemoryError条件后您将看到的中间件服务器日志(Weblogic,WAS,JBoss等)的内容:
·它是从实际的Java HotSpot VM本机代码生成的
·由于Java Heap(年轻一代/旧一代空间)内存分配失败( 由于Java Heap耗尽触发
在OpenJDK项目源代码的下面找到暴露JVM HotSpot实现的代码片段。 该代码显示了哪个条件触发了OutOfMemoryError:Java堆空间条件。
#collectedHeap.inline.hpp
我强烈建议您自己从OpenJDK下载HotSpot VM源代码,以自己的利益和将来的参考。
http://openjdk.java.net/groups/hotspot/
好的,我的应用程序Java Heap已经用尽了……我如何监视和跟踪我的应用程序Java Heap?
正确监视和跟踪Java堆空间(年轻一代和老一代空间)的内存占用量的最简单方法是从HotSpot VM中启用详细GC。 请简单地在JVM启动参数中添加以下参数:
-verbose:gc –XX:+ PrintGCDetails –XX:+ PrintGCTimeStamps –Xloggc:<应用程序路径> /gc.log
然后,您可以按照下面的教程进行操作,以了解如何阅读和分析HotSpot Java Heap占用空间。
http://javaeesupportpatterns.blogspot.com/2011/10/verbosegc-output-tutorial-java-7.html
好的,谢谢,现在我可以看到我有一个很大的Java Heap内存问题…但是如何解决呢?
有多种情况可能导致Java堆耗尽,例如:
·Java堆空间相对于您的应用程序流量和占用空间太小
·Java堆内存泄漏( OldGen空间随着时间的推移而缓慢增长……
·突发线程和/或流氓线程在短时间内等占用大量内存。
在下面找到您可以遵循的高级步骤列表,以进行进一步的故障排除:
·如果尚未完成,请启用详细GC >> -verbose:gc
·分析详细的GC输出并确定每个Java Heap空间(YoungGen和OldGen)的Java Heap的内存占用量
·分析详细的GC输出或使用JConsole之类的工具来确定您的Java Heap是否随时间泄漏。 这可以通过监视HotSpot旧发电机空间来观察。
·监视您的中间件线程并定期生成JVM线程转储,尤其是当观察到Java Heap利用率突然增加时。 线程转储分析将使您能够查明潜在的长时间运行的线程,这些线程可以在很短的时间内在Java堆上分配大量对象。 如果有的话
·在JVM启动参数中添加以下参数:-XX:HeapDumpOnOutOfMemoryError这将使HotSpot VM生成二进制的堆转储(HPROF)格式。 二进制堆转储是关键数据,可用来分析应用程序的内存占用和/或Java堆内存泄漏的源
从分辨率的角度来看,我建议您使用生成的堆转储分析Java堆内存占用量。 可以使用免费的内存分析器工具(MAT)分析二进制堆转储(HPROF格式)。 这将使您了解您的Java应用程序占用空间和/或查明可能的内存泄漏的来源。 一旦清楚了解了这种情况,就可以通过增加Java堆容量(通过–Xms和Xmx参数)或减少应用程序内存占用和/或消除应用程序代码中的内存泄漏来解决问题。 请注意,在中间件服务器代码和JDK中也经常发现内存泄漏。
我已尽一切努力,但我仍在努力查明OutOfMemoryError的来源
不用担心,只需在本文末尾发表评论/问题或直接通过电子邮件发送给我@ phcharbonneau @ hotmail.com 。 我目前提供免费的IT / Java EE咨询。 请在提供您生成的数据(例如指向堆转储的下载链接,线程转储数据,服务器日志等)的同时为您提供问题描述,我们将为您分析问题。
参考: OutOfMemoryError:Java堆空间– Java EE支持模式和Java教程博客中的JCG合作伙伴 Pierre-Hugues Charbonneau 分析和解决方法 。

翻译自: https://www.javacodegeeks.com/2012/05/outofmemoryerror-java-heap-space.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

函数伪代码_Excel常用函数

欢迎大家在此收看任我行office教程系列&#xff0c;这一期我来为大家讲什么内容呢&#xff0c;那就是几个office的几个常用函数了&#xff0c;如果您不会这些函数和函数嵌套那么您的Excel电子表格也就别玩了哈&#xff0c;那么他们分别是什么函数呢。咱们现在隆重有请这几位函数…

阻止Ajax多次提交

1、Ajax的abort() xhr $.ajax({})if (xhr){xhr.abort(); } 2、通过在Ajax的beforeSend()方法以及complete()方法添加删除类&#xff0c;对类进行判断&#xff0c;对于两者来回切换的时候&#xff0c;对类的设置不好进行操作上的时候&#xff0c;可以通过使用一个input框&#…

POJ3675 Telescope 圆和多边形的交

POJ3675 用三角剖分可以轻松搞定&#xff0c;数据也小 随便AC。 #include<iostream> #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<algorithm> #include<queue> #include<vector> usi…

windows搭建python开发环境方法_04 Windows下搭建 Python 开发环境 - Python 入门教程

前面两个小节中我们已经学习了在 MacOS 和 Ubuntu 中安装 Python 的开发环境。当然&#xff0c;作为用户基数最多的 Windows 操作系统&#xff0c;我们当然不会忘记&#xff0c;这节课我们就来学习下如何在 Windows 下搭建 Python 的开发环境。1. 下载 Python1.1 Python 2 与 P…

消除view旋转后边缘有锯齿的情况

view的layer中有个属性叫 allowsEdgeAntialiasing&#xff1b; 在形变后有边缘有锯齿的话 可以 view.layer.allowsEdgeAntialiasing YES; 消除锯齿 如果直接在*-Info.plist配置 Renders with edge antialiasing YES 会导致UIAlertView显示有问题。转载于:https://www.cnblogs…

Google AppEngine:任务队列API

任务队列 com.google.appengine.api.taskqueue 使用任务队列&#xff0c;用户可以发起一个请求&#xff0c;以使应用程序执行此请求之外的工作。 它们是进行后台工作的强大工具。 此外&#xff0c;您可以将工作组织成小的离散单元&#xff08;任务&#xff09;。 然后&#xf…

打印5列五颗星_55组“数学顺口溜” 大九九乘法口诀表!孩子想学好数学必须背熟...

小学数学需要记住的知识点还是比较多的&#xff0c;看到这些知识点&#xff0c;很多孩子都觉得枯燥&#xff0c;不愿意用心去记。今天&#xff0c;我们给孩子们汇总了55组“数学顺口溜”和大九九乘法口诀&#xff0c;让孩子们在轻松有趣的氛围中学到知识&#xff01;55组“顺口…

C++学习48 对ASCII文件的读写操作

如果文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件)。程序可以从ASCII文件中读入若干个字符,也可以向它输出一些字符。 对ASCII文件的读写操作可以用以下两种方法&#xff1a;1) 用流插入运算符“<<”和流提取…

文献综述写作之“结构内容”

综述&#xff1a; 又称文献综述&#xff0c;英文名为review。它是利用已发表的文献资料为原始素材撰写的&#xff0c;通过对已发表材料的组织、综合和评价&#xff0c;以及对当前研究进展的考察来澄清问题。在某种意义上&#xff0c;综述论文具有一定的指导性&#xff0c;包括以…

NetBeans 7.2 beta:更快,更有用

NetBeans 7.2的beta版本引起了极大的兴奋。 在本文中&#xff0c;我将简要介绍一下此版本令人兴奋的原因&#xff08;包括更好的性能&#xff0c;提供更多的提示以及集成FindBugs&#xff09;。 NetBeans 7.2 beta在典型的下载捆绑软件中可用&#xff0c;从较小的Java SE&#…

地铁闸门会夹伤人吗_家长们注意啦!又有孩子被地铁闸机夹翻

原标题&#xff1a;家长们注意啦&#xff01;又有孩子被地铁闸机夹翻现代快报讯(通讯员狄公宣记者顾元森)家长带着孩子通过地铁站闸机&#xff0c;这件事情看似简单&#xff0c;却隐藏着风险。近日&#xff0c;南京地铁又发生了一起儿童被闸机夹翻的事&#xff0c;所幸孩子并无…

WPF DevExpress 设置雷达图Radar样式

DevExpress中定义的ChartControl很不错&#xff0c;很多项目直接使用这种控件。 本节讲述雷达图的样式设置 <Grid><Grid.Resources><DataTemplate x:Key"LabelItemDataTemplate" DataType"dxc:SeriesLabelItem"><Border CornerRadius…

mxnet系列教程之1-第一个例子

第一个例子当然是mnist的例子 假设已经成功安装了mxnet 例子的代码如下&#xff1a; cd mxnet/example/image-classification python train_mnist.py这样就会运行下去 train_mnist.py的代码为 """ Train mnist, see more explanation at http://mxnet.io/tutori…

Apache Shiro第3部分–密码学

除了保护网页和管理访问权限外&#xff0c; Apache Shiro还执行基本的加密任务。 该框架能够&#xff1a; 加密和解密数据&#xff0c; 哈希数据&#xff0c; 生成随机数。 Shiro没有实现任何加密算法。 所有计算都委托给Java密码学扩展&#xff08;JCE&#xff09;API。 使…

mysql数据存在就更新_Mysql:如果数据存在则更新,不存在则插入

mysql语法支持如果数据存在则更新&#xff0c;不存在则插入&#xff0c;首先判断数据存在还是不存在的那个字段要设置成unique索引&#xff0c;例如表tb_addrbook如下&#xff1a;索引&#xff1a;语句1:不存在插入INSERT INTO tb_addrbook(num,name,mobile) VALUE(1001,小李,1…

Memcached, Redis, MongoDB区别

mongodb和memcached不是一个范畴内的东西。mongodb是文档型的非关系型数据库&#xff0c;其优势在于查询功能比较强大&#xff0c;能存储海量数据。mongodb和memcached不存在谁替换谁的问题。和memcached更为接近的是redis。它们都是内存型数据库&#xff0c;数据保存在内存中&…

洛谷P1757 通天之分组背包 [2017年4月计划 动态规划06]

P1757 通天之分组背包 题目背景 直达通天路小A历险记第二篇 题目描述 自01背包问世之后&#xff0c;小A对此深感兴趣。一天&#xff0c;小A去远游&#xff0c;却发现他的背包不同于01背包&#xff0c;他的物品大致可分为k组&#xff0c;每组中的物品相互冲突&#xff0c;现在&a…

c3p0 0.9.1.2 配套mysql_连接数据库,使用c3p0技术连接MySQL数据库

读取配置文件连接MySQL数据库先确认已经导入了 mysql 的驱动包db.propertiesdrivercom.mysql.jdbc.Driverurljdbc:mysql://localhost:3306/v20?useUnicodetrue&characterEncodingutf8usernamerootpassword123456JdbcUtil.javapackage com.stu_mvc.utils;import java.io.Fi…

【Hadoop】Hadoop MR 自定义分组 Partition机制

1、概念 2、Hadoop默认分组机制--所有的Key分到一个组&#xff0c;一个Reduce任务处理 3、代码示例 FlowBean package com.ares.hadoop.mr.flowgroup;import java.io.DataInput; import java.io.DataOutput; import java.io.IOException;import org.apache.hadoop.io.WritableC…

Spring Framework 3.2 M1发布

SpringSource刚刚宣布了针对Spring 3.2的第一个里程碑版本。 现在可以从SpringSource存储库&#xff08;位于http://repo.springsource.org/&#xff09;获得新版本。 查看有关通过Maven 解决这些工件的快速教程 。 此版本包括&#xff1a; 最初支持异步Controller方法 早期…