`
Sobfist
  • 浏览: 31712 次
  • 性别: Icon_minigender_1
  • 来自: 邯郸
社区版块
存档分类
最新评论

Java线上应用故障排查之二:高内存占用(转)

阅读更多
搞Java开发的,经常会碰到下面两种异常:

1、java.lang.OutOfMemoryError: PermGen space

2、java.lang.OutOfMemoryError: Java heap space

要详细解释这两种异常,需要简单重提下Java内存模型。

(友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hankchen)

Java内存模型是描述Java程序中各变量(实例域、静态域和数组元素)之间的关系,以及在实际计算机系统中将变量存储到内存和从内存取出变量这样的低层细节。

在Java虚拟机中,内存分为三个代:新生代(New)、老生代(Old)、永久代(Perm)。

(1)新生代New:新建的对象都存放这里

(2)老生代Old:存放从新生代New中迁移过来的生命周期较久的对象。新生代New和老生代Old共同组成了堆内存。

(3)永久代Perm:是非堆内存的组成部分。主要存放加载的Class类级对象如class本身,method,field等等。

如果出现java.lang.OutOfMemoryError: Java heap space异常,说明Java虚拟机的堆内存不够。原因有二:

(1)Java虚拟机的堆内存设置不够,可以通过参数-Xms、-Xmx来调整。

(2)代码中创建了大量大对象,并且长时间不能被垃圾收集器收集(存在被引用)。

如果出现java.lang.OutOfMemoryError: PermGen space,说明是Java虚拟机对永久代Perm内存设置不够。

一般出现这种情况,都是程序启动需要加载大量的第三方jar包。例如:在一个Tomcat下部署了太多的应用。



从代码的角度,软件开发人员主要关注java.lang.OutOfMemoryError: Java heap space异常,减少不必要的对象创建,同时避免内存泄漏。
分享到:
评论

相关推荐

    Java线上故障排查方案(2).pdf

    本文档围绕Java线上故障排查提供了详尽的方案和知识点,覆盖了从问题定位到解决方案的多个方面。 首先,了解Java线上常见问题的分类是非常重要的。在生产环境中,问题可大致分为系统异常和业务异常两大类。系统异常...

    Java线上故障排查方案.rar

    Java线上故障排查是每个Java开发者或运维人员必备的技能之一,尤其在生产环境中,快速定位并解决问题至关重要。本文将深入探讨Java线上故障排查方案,帮助你掌握一系列实用的方法和技术。 一、日志分析 1. 日志级别...

    Java线上故障排查方案.pdf

    ### Java线上故障排查方案 #### 一、引言 在软件开发领域,处理生产环境中的问题是一项必备技能。生产环境中可能会遇到多种复杂的情况,比如代码bug、硬件故障、网络问题等,这些都可能导致应用程序无法正常运行。...

    线上故障排查全套路,总有一款适合你1

    线上故障排查是IT运维中的重要环节,涉及到系统的稳定性和服务的连续性。本文主要讨论了四种常见的线上故障类型:CPU问题、频繁GC、上下文切换过多以及磁盘问题,并提供了相应的排查工具和方法。 首先,CPU异常是较...

    线上故障定位分析全套方案

    本文将详细介绍一套线上故障排查的全面方案,涵盖CPU、磁盘、内存和网络四个关键层面。 首先,CPU异常是常见的故障类型。CPU使用率过高可能是由于业务逻辑中的死循环、频繁的垃圾回收(GC)或者上下文切换过于频繁...

    Arthas - Java 诊断利器.docx

    Arthas,全名 Alibaba Arthas,是一个强大的开源Java诊断工具,由阿里巴巴开发并维护。这个工具的主要目的是帮助...通过熟练掌握Arthas,开发者可以在面对复杂问题时更加从容,及时解决线上故障,保障服务的高可用性。

    Java 运行时监控

    - **内存分析工具**:VisualVM、MAT (Memory Analyzer Tool) 等工具可以帮助开发者分析堆内存,找出内存占用过高或者内存泄漏的原因。 3. **线程监控** - **线程状态**:Java中的线程有多种状态,如新建、运行、...

    IBM堆内存对象分析工具

    线上故障主要会包括 CPU、内存、磁盘以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。基本上出问题就是 df、free、top,然后依次 使用jstack、jmap,具体问题...

    以线上实例来看,内存泄漏的图文解决方案.docx

    #### 三、故障排查步骤 ##### 1. 获取故障进程ID - **工具**: `jps` - **功能**: `jps`(JVM Process Status Tool)是一个用来显示指定系统中所有HotSpot虚拟机进程的工具。 - **命令**: `jps -l -m` - `-l`: ...

    唯品会java分析工具vjtop

    3. **CPU使用率监控**:VJTop可以实时监控Java应用的CPU使用率,帮助找出CPU占用过高的线程,分析其执行的代码,从而优化性能。 4. **方法耗时统计**:通过追踪方法调用耗时,VJTop能帮助开发者识别出性能瓶颈,...

    线上系统性问题定位与方法论.docx

    基本的疑难排查步骤包括:执行 top 命令记录 CPU 使用率,执行 free 命令记录内存使用率,使用 ps 命令记录进程信息,使用 jstack 收集线程信息,使用 jstat 视图 Old 区占用率,使用 jmap 保留内存信息等。...

    技术团队如何为金融系统保驾护航1

    3. 故障排查效率:培训开发人员快速定位和解决问题,减少故障持续时间。 4. 优先级排序:随着问题增多,确定优先级至关重要,关键问题需优先解决。 5. 性能监控:通过监控系统CPU、内存使用情况,及时发现并定位性能...

    android 岗位职责

    - **故障排查**:解决线上问题,对用户反馈的问题进行定位和修复。 3. **高级Android开发工程师**: - **技术领导**:指导和培训初级或中级工程师,参与技术决策,推动技术创新。 - **跨平台开发**:了解并可能...

    arthas培训文档arthas培训文档

    Arthas是一款强大的Java线上诊断工具,由Alibaba开源,它提供了多种功能,帮助开发者在不重启应用的情况下高效地解决线上问题。Arthas的使用可以极大提高问题定位和排查的效率,对于企业内部的运维和开发人员来说...

    MGR技术在美团的应用.pptx

    **可观测性差**:针对MySQL性能抖动的复杂性,MGR模块增强了性能统计,将其输出到performance_schema和error日志,每秒提供一次Paxos状态机的统计信息,提高了故障排查效率。 D. **内存占用过大**:问题在于内存...

    入職工作經驗分享第三版

    联想AIO产品系列包括H1000、H3000、凌云9000和云桌面等,广泛应用于政府、教育、金融、医疗、制造和交通等行业,不仅有效减少了数据中心的空间占用和运营成本,还显著提升了业务效率和客户满意度。 2. **项目技术...

    数据架构设计与实践(上)-MGR在美团点评中的优化.pdf

    为提高可观察性,团队在GR模块中增加了秒级性能统计,并将其输出到performance_schema和error日志,这样可以每秒获取一次Paxos状态机的统计信息,便于故障排查。 此外,内存占用过高有时会导致OOM(Out of Memory)...

    高可用分布式架构设计与实践-内训方案.pdf

    Java线程堆栈分析是排查性能瓶颈的重要手段之一,通过分析线程的状态、锁持有情况等信息,可以定位到可能的问题根源。 - **借助堆栈分析性能瓶颈** 结合实际案例,分享如何利用Java线程堆栈分析工具来诊断性能...

    DerbySoft可伸缩的日志分析平台实践.pdf

    在当今的IT行业中,日志分析扮演着至关重要的角色,尤其对于大型分布式系统来说,它能够帮助我们监控系统性能、定位错误和进行故障排查。DerbySoft作为一家专注于技术的公司,其在日志分析领域的实践为我们提供了...

Global site tag (gtag.js) - Google Analytics