`
ld362093642
  • 浏览: 66706 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

jar程序运行内存溢出GC overhead limit exceeded

 
阅读更多
这个是JDK6新添的错误类型。是发生在GC占用大量时间为释放很小空间的时候发生的,是一种保护机制。解决方案是,关闭该功能,使用—— -XX:-UseGCOverheadLimit
 
加载了太多资源到内存,本地的性能也不好,gc时间消耗的较多
这里要查看是否有使用大内存的代码或死循环。

GC overhead limt exceed检查是Hotspot VM 1.6定义的一个策略,通过统计GC时间来预测是否要OOM了,提前抛出异常,防止OOM发生。Sun 官方对此的定义是:“并行/并发回收器在GC回收时间过长时会抛出OutOfMemroyError。过长的定义是,超过98%的时间用来做GC并且回收了不到2%的堆内存。用来避免内存过小造成应用不能正常工作。“
Sun官方解释:

The parallel / concurrent collector will throw an OutOfMemoryError if too much time is being spent in garbage collection: if more than 98% of the total time is spent in garbage collection and less than 2% of the heap is recovered, an OutOfMemoryError will be thrown. This feature is designed to prevent applications from running for an extended period of time while making little or no progress because the heap is too small. If necessary, this feature can be disabled by adding the option -XX:-UseGCOverheadLimit to the command line

一、异常如下:
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded

二、解释:
JDK6新增错误类型。当GC为释放很小空间占用大量时间时抛出。
一般是因为堆太小。导致异常的原因:没有足够的内存。

三、解决方案:

 

1、查看系统是否有使用大内存的代码或死循环。
2、可以添加JVM的启动参数来限制使用内存:-XX:-UseGCOverheadLimit

增加参数,-XX:-UseGCOverheadLimit,关闭这个特性,同时增加heap大小,-Xmx1024m

java -jar -XX:-UseGCOverheadLimit -Xmx2048m BKInsert.jar 



分享到:
评论

相关推荐

    poi大量数据读取gc内存溢出解决方案

    poi读取大量数据会造成gc内存溢出的报错,由于垃圾回收机制无法将大量的对象及时的回收,而这些对象又会保存在内存中,会导致内存不够用的情况,这时候我们就需要使用新的方法,读取为cvs即可.此解决方案可支持千万数据的...

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

    在IT领域,尤其是在大数据处理和...同时,理解数据处理的瓶颈,选择合适的硬件配置和软件配置,都是预防和解决Kettle内存溢出问题的重要手段。在实际操作中,可能需要反复试验和调整,找到最适合当前环境和任务的配置。

    myeclipse 解决内存的问题

    本文将详细介绍如何优化MyEclipse的内存配置,从而提高其运行效率。 #### 二、MyEclipse内存问题成因分析 1. **自动更新检查**:MyEclipse默认会在启动时检查是否有新功能或更新,这一过程会占用一定的系统资源。 ...

    关于java堆内存溢出的几种情况

    【情况二】:`java.lang.OutOfMemoryError: GC overhead limit exceeded` 这个错误是JDK6引入的新类型,当垃圾收集器为了释放少量空间而花费过多时间时抛出。通常由于堆内存过小,导致频繁且效率低下的垃圾回收。...

    xmemcached-1.2.6.2

    xmemcached-1.2.6.2

    Java堆内存又溢出了!教你一招必杀技(推荐)

    Java内存溢出问题是一个常见的性能瓶颈,特别是在大型的JAVA项目中。...了解并熟练掌握这些知识点,可以帮助我们有效地诊断和解决Java应用程序中的内存溢出问题,优化系统性能,减少不必要的GC停顿,提升用户体验。

    hive on spark mr 数据开发常见问题解决

    当Hive作业处理大数据量时,可能会出现`shuffle in fetcher#6 at GC overhead limit exceeded`错误。这通常是因为MapReduce任务的内存分配不当导致的。为解决这个问题,可以调整`mapreduce.reduce.shuffle.input....

    R语言导入导出数据方法介绍

    讲述如何在R语言中导入导出数据的PPT,一共28张

    Eclipse下使用ANT编译提示OutOfMemory的解决方法

    在使用Eclipse集成开发环境(IDE)进行ANT编译时,有时会遇到“OutOfMemory”错误,这通常意味着ANT在尝试编译大量代码或者运行复杂构建任务时,分配给它的内存不足。为了解决这个问题,我们需要调整ANT的内存设置,...

    java内存溢出原因

    Java内存溢出(Out Of Memory, OOM)是开发者在编程过程中经常遇到的问题,尤其是在处理大量数据或长时间运行的应用程序时。本篇文章将详细解析三种常见的Java内存溢出类型:JVM PermGen space溢出、JVM heap space...

    OutOfMemoryError Handbook

    OutOfMemoryError的8种经典案例,Java heap space、GC overhead limit exceeded、Permgen space、Metaspace、Unable to create new native thread、Out of swap space?、Requested array size exceeds VM limit、...

    java内存泄露、溢出检查方法和工具.doc

    如果程序在运行过程中无法正确地释放不再使用的内存,就会导致内存泄露,进而可能引发内存溢出错误,如"java.lang.OutOfMemoryError: GC overhead limit exceeded"或"java.lang.OutOfMemoryError: Java heap space...

    java内存泄露、溢出检查方法和工具

    java.lang.OutOfMemoryError: GC overhead limit exceeded java.lang.OutOfMemoryError: Java heap space ``` 初步判断可能的原因有: 1. **JVM内存设置不当**: - 项目的实际需求超出默认的JVM内存设置。 2. **...

    理论:第十三章:堆溢出,栈溢出的出现场景以及解决方案.docx

    2. OutOfMemoryError: GC overhead limit exceeded:超过 98% 的时间用来做 GC 并且回收了不到 2% 的堆内存。 3. OutOfMemoryError: Direct buffer memory:堆外内存。 4. OutOfMemoryError: unable to create new ...

    OutOfMemoryError_8种典型案例分享

    当垃圾收集器在执行GC时,所花费的时间超过98%的时间用于回收不到2%的堆内存,超过一定的阈值时就会抛出GC overhead limit exceeded错误。这通常表明应用生成了太多的垃圾,虽然堆内存未满,但垃圾太多导致垃圾回收...

    高手总结的9种OOM常见原因及解决方案.docx

    GC overhead limit exceeded错误发生在Java进程花费98%以上的时间执行GC,但只恢复了不到2%的内存,且该动作连续重复了5次。常见的原因包括: * 超大对象。 * 业务峰值压力。 * 内存泄漏。 解决方案: * 调高JVM...

    系统稳定性——OutOfMemoryError常见原因及解决方法1

    当JVM执行垃圾收集的时间超过98%,但只能回收不到2%的内存,并且这种情况连续发生5次,就会触发`java.lang.OutOfMemoryError:GC overhead limit exceeded`。这表明应用几乎耗尽了所有内存,且GC无法有效回收。 - ...

    OutOfMemoryError_8种典型案例分享.pdf

    第四种情况是垃圾收集器开销超过限制(GC overhead limit exceeded)。当JVM花费太多时间用于垃圾回收而回收的内存却很少时,就会抛出此错误。这通常发生在内存泄漏的情况下,垃圾回收器无法回收内存,导致程序运行...

    SmaliInjector20170719

    若在 jar 转加 dex 的过程中出现 java.lang.OutOfMemoryError: GC overhead limit exceeded 的错误,请调大 main.bat 中的 -Xmx 和 -Xss 其它: ============================================================...

    无私奉献-jvm面试备战

    OutOfMemoryError 异常有多种场景,包括 java.lang.OutOfMemoryError: Java heap space、java.lang.OutOfMemoryError: GC overhead limit exceeded 和 java.lang.OutOfMemoryError: Direct buffer memory 等。

Global site tag (gtag.js) - Google Analytics