JVM运行报错:GC overhead limit exceeded
来源:互联网 发布:外汇数据api 编辑:程序博客网 时间:2024/05/18 00:22
今天在折腾OOM和java的4种引用类型的时候,在运行过程中JVM报了一个错误:
java.lang.OutOfMemoryError: GC overhead limit exceeded
The 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.
我使用的是JDK1.6.0_37和JDK_1.7.0_60版本,这2个版本中JVM默认启动的时候-XX:+UseGCOverheadLimit,即启用了该特性。这其实是JVM的一种推断,如果垃圾回收耗费了98%的时间,但是回收的内存还不到2%,那么JVM会认为即将发生OOM,让程序提前结束。当然我们可以使用-XX:-UseGCOverheadLimit,关掉这个特性。
不太明白为什么JDK要提供这么个参数。当我们遇到这个错误只能说明:要么是内存空间不足,要么是存在内存泄露。这个时候对我们有意义的,其实就是heap dump,我们可以分析堆内存的情况,从而诊断出是否代码存在问题。
我们知道如果在启动JVM的时候设置了如下的参数,那么JVM崩溃的时候会打印出heap dump。
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:/
个人感觉,如果真的发生了"GC overhead limit exceeded"错误,那么其实离实际的OOM已经不远了,所以让JVM做个预测提前结束,感觉意义不大。
- JVM运行报错:GC overhead limit exceeded
- JVM运行报错:GC overhead limit exceeded
- 错误整理:JVM报错GC overhead limit exceeded
- 控制台报错:java.lang.OutOfMemoryError: GC overhead limit exceeded
- Eclipse报错:gc overhead limit exceeded eclipse
- Macbook Eclipse报"GC overhead limit exceeded"
- GC overhead limit exceeded
- GC overhead limit exceeded
- GC overhead limit exceeded
- gc overhead limit exceeded eclipse
- gc overhead limit exceeded解决方案
- Android gc overhead limit exceeded
- GC overhead limit exceeded : Spark
- OutOfMemoryError: GC overhead limit exceeded
- .OutOfMemoryError: GC overhead limit exceeded
- OutOfMemoryError: GC overhead limit exceeded
- OutOfMemoryError GC overhead limit exceeded
- Maven 运行错误GC overhead limit exceeded解决方法
- JVM内存管理总结
- 全副武装,迎战C++考试 & 自学考试 & 软件设计师考试
- 对文件的操作
- 面试题-找出数组中第k大小的数,输出数所在的位置
- Object-C 基础学习笔记(for,foreach,while,switch)
- JVM运行报错:GC overhead limit exceeded
- HDU - 5105 Math Problem
- 在Activitis间传递ArrayList参数
- 正则表达式
- Ios Android Hybrid app 与 Js Bridge 二 (具体实现)
- MongoDB分片实战:性能和优化
- 第十二周项目一——程序阅读(1)
- Android图片异步加载之Android-Universal-Image-Loader
- 最大子序列递归