我的应用程序抛出java.lang.OutOfMemoryError: GC overhead limit exceeded
错误。我搜索了它并获得了足够的信息。甲骨文说:
原因:详细消息“超出GC开销限制”表示垃圾收集器一直在运行,Java程序进展非常缓慢。在垃圾收集之后,如果Java进程花费超过大约98%的时间进行垃圾收集,并且它正在恢复少于2%的堆并且到目前为止已经执行了最后5个(编译时常量)连续垃圾集合,然后抛出java.lang.OutOfMemoryError。通常会抛出此异常,因为实时数据量几乎不适合Java堆,新分配的可用空间很小。 操作:增加堆大小。可以使用命令行标志-XX:-UseGCOverheadLimit关闭超出GC Overhead限制的java.lang.OutOfMemoryError异常。
我的问题是;如何跟踪GC
和我的java程序分配的堆。我试过jstat -gcutil
,但没有足够的信息。是否有一个工具,我可以看到我的Java程序堆分配超过GC
堆分配?
谢谢你的建议。
答案 0 :(得分:2)