`
ayufox
  • 浏览: 276263 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JVM Java HeapSpace到达临界值的高CPU问题

    博客分类:
  • JVM
阅读更多

     本周有同事反馈,IDC环境出现了CPU非常高的问题,如下图:

     
     看一下HeapSpace的情况,如下图,很明显,HeapSpace已经到达了一个临界值:

    
     看一下GC数据统计,短短1个小时,竟然FullGC了946次:

    
     猜想:在HeapSpace逼近临界值的时候,分配小块内存(譬如创建一个对象,如果是分配大块内存,实际上JVM直接就报OutOfMemory了),JVM发现内存不足,会尝试去FullGC出空闲内存,每次还真能挤出一点点,但很快又得重新FullGC,我们知道,实际上FullGC是非常消耗CPU的操作。但为啥不报OutOfMemory呢?因为每次总能够释放出一点点内存,因此竟然就这么维持下去了。这里非常郁闷,JVM直接报OutOfMemory还好过一点,至少直接知道原因。
     JVM一般启动参数有一个GCTimeRatio参数,表示目标吞吐量,JVM会自动调整各内存区大小去达到该吞吐量值,如果吞吐量低于某个值,是会自动OutOfMemory,目前该值默认是1,表示GC时间占总时间不超过1%,但目前来看,要通过这种方式去让JVM直接报告OutOfMemory而不是持续维持高CPU看起来是不行的。
     已经可以定位到是内存达到临界值的问题,接下来问题就简单了,dump出HeapSpace空间,使用Eclipse Memory Analyzer分析一下,原因一目了然,有点讶异,竟然是BlackStar的detail工作模式导致的,这里是因为使用的时候策略没有调整好,调整detail策略,重新启动JVM,问题解决,当然这里BlackStar的detail工作模式的自我保护方式也不好,实际上当发现使用内存过多的时候,应该调整自动放弃。

     

     

1
0
分享到:
评论
2 楼 teager 2010-09-30  
查到了
jmap -heap
1 楼 teager 2010-09-30  
不错!学习了.
请教一下,怎么得到HeapSpace这张图里的信息? 谢谢

相关推荐

    java抛java heap space

    在 Java 应用程序运行过程中,如果出现内存不足的情况,JVM(Java虚拟机)会抛出 `java.lang.OutOfMemoryError: Java heap space` 的异常。这种错误通常发生在应用程序对内存的需求超过了 JVM 能够提供的最大堆空间...

    解决Java_heap_space问题

    解决Java heap space问题的关键在于合理配置JVM参数,优化内存使用效率,以及排查潜在的内存泄漏。以下是一些有效的解决方案: 1. **调整JVM参数** - 使用`-Xms`和`-Xmx`参数设置JVM的初始堆大小和最大堆大小。...

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

    "Java.lang.OutOfMemoryError: Java heap space 解决...Java.lang.OutOfMemoryError: Java heap space 是一种常见的 Java 错误,解决该问题需要从多方面入手,包括调整 JVM 的堆大小、调整 Tomcat 的配置、优化程序等。

    java错误处理:java.lang.OutOfMemoryError: Java heap space

    其中,“java.lang.OutOfMemoryError: Java heap space”是一种常见的异常情况,它表明Java虚拟机(JVM)的堆内存空间已耗尽。 #### 标题和描述中的知识点详解 **标题:“java错误处理:java.lang.OutOfMemoryError:...

    关于(java heap space)内存溢出的解决办法

    在Java编程中,"java heap space"内存溢出是一个常见的问题,它通常发生在应用程序尝试分配超过JVM堆内存限制的对象时。这个问题对于任何Java开发者来说都至关重要,因为如果不妥善处理,可能会导致程序崩溃。以下是...

    Myeclipse下java.lang.OutOfMemoryError Java heap space的解决

    通过以上方法,通常可以有效解决Myeclipse下出现的`java.lang.OutOfMemoryError: Java heap space`问题。需要注意的是,在调整JVM参数时应当根据实际情况合理设置,以免造成资源浪费或者性能下降。同时也要持续关注...

    tomcat 解决Java heap space问题

    标题中的“tomcat 解决Java heap space问题”指的是在运行Apache Tomcat服务器时,由于Java应用程序内存分配不当或资源消耗过大导致的“Java heap space”错误。这个问题通常出现在Java虚拟机(JVM)试图为对象分配...

    Java heap space 解决方法

    通过上述的详细介绍,我们可以看出解决“Java heap space”问题的关键在于合理调整JVM的堆内存大小。无论是Windows还是Linux系统,都可以通过修改相应的启动脚本或环境变量来实现这一目标。正确地配置这些参数不仅...

    java解决nested exception is java.lang.OutOfMemoryError Java heap space

    Java程序在运行过程中可能会遇到各种异常,其中"nested exception is java.lang.OutOfMemoryError: Java heap space"是一个常见的问题,通常发生在程序试图分配超过堆内存限制的空间时。这个错误表明Java虚拟机(JVM...

    kettle内存溢出(Java heap space)以及解决方法.docx

    这种错误通常表现为"Java heap space",意味着Java虚拟机(JVM)分配的内存不足以执行任务。 **Java堆空间的原理** Java堆是Java虚拟机中最大的一块内存区域,用于存储对象实例。当程序创建新的对象并分配给堆时,...

    编译时出现java.lang.OutOfMemoryError Java heap space异常

    ### 编译时出现java.lang.OutOfMemoryError Java heap space异常 #### 一、问题概述 在进行Java项目编译的过程中,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这种异常。这类异常通常表明Java虚拟机...

    java heap space解决方法

    ### Java Heap Space 解决方法详解 #### 一、引言 在Java应用程序运行过程中,经常会遇到“Out of Memory Error: Java Heap Space”的错误提示。这种错误通常发生在Java虚拟机(JVM)的堆内存不足时,导致程序无法...

    An internal error occurred during: \"Building workspace\". Java heap space

    Java heap space" 描述的是一个常见的Eclipse集成开发环境(IDE)中的问题,当用户尝试构建工作区时遇到内存不足的情况。这个错误表明Eclipse在执行任务时耗尽了Java虚拟机(JVM)分配的堆内存。以下是关于这个问题...

    记录java.lang.OutOfMemoryErrorJava heap space的情况.docx

    Java虚拟机(JVM)是Java应用程序的运行环境,它负责执行字节码并管理内存...通过上述方法,可以有效地预防和解决`java.lang.OutOfMemoryError: Java heap space`问题,优化JVM内存管理,提升应用程序的稳定性和性能。

    在eclipse设置JVM heap 的最小值与最大值.bmp

    在eclipse设置JVM heap 的最小值与最大值的图案

    如何解决项目中java heap space的问题

    java heap space问题是Java项目中非常常见的问题,但是通过调整JVM参数、优化代码和使用jvisualvm工具可以解决这个问题。同时,了解java heap space问题的原因和解决方案,也可以帮助开发人员更好地理解Java虚拟机和...

    java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法

    `java.lang.OutOfMemoryError: Java heap space`错误是Java开发者经常会遇到的一个问题。通过理解错误产生的根本原因,并采取相应的措施来优化内存使用,可以有效地提高程序的性能和稳定性。希望本文提供的解决策略...

    jvmjava,java实现的JVM。.zip

    《Java实现的JVM——深入理解与实践》 在计算机科学领域,Java虚拟机(JVM)是Java语言的关键组成部分,它使得Java程序能够在不同平台上运行而无需重新编译。本项目“jvmjava”是一个开源项目,由Java语言实现,...

Global site tag (gtag.js) - Google Analytics