我的應用程序拋出java.lang.OutOfMemoryError: GC overhead limit exceeded
錯誤。我搜索了它並獲得了足夠的信息。 Oracle說:gc堆分配率和我的java程序的速度
原因:詳細消息「超出GC開銷限制」表示垃圾收集器一直在運行,Java程序進度非常緩慢。在垃圾收集之後,如果Java進程花費了大約98%的時間進行垃圾收集,並且如果它正在恢復小於2%的堆,並且迄今爲止最後5次(編譯時間常量)連續垃圾集合,則拋出java.lang.OutOfMemoryError。通常會拋出此異常,因爲實時數據量很少適合Java堆,而新分配的可用空間很小。 操作:增加堆大小。可以使用命令行標誌-XX:-UseGCOverheadLimit關閉超出GC開銷限制的java.lang.OutOfMemoryError異常。
我的問題是;我如何跟蹤由GC
和我的java程序分配的堆。我試過jstat -gcutil
但它沒有足夠的信息。有沒有一個工具,我可以看到我的java程序堆堆分配GC
堆分配之間的比率? 謝謝你的建議。
jconsole或商業輪廓儀例如jprofiler – 2015-02-24 10:17:38