2015-11-25 31 views
0

我使用Java 8運行我的應用程序,但是我一直得到以下錯誤:Java 8:OutOfMemory錯誤,更改MaxPermSize?

java.lang.OutOfMemoryError: GC overhead limit exceeded 

我試圖增加MaxPermSize512米到但還是我收到了同樣的錯誤。我該如何解決這個問題?

+1

考慮看看[這篇文章。](http://stackoverflow.com/questions/5839359/java-lang-outofmemoryerror-gc-overhead-limit-exceeded) – Keews

+2

JVM v8中的MaxPermSize不起作用 - 那裏不是PermGen。 – Arek

+0

謝謝你的答覆,如果沒有PermGen我應該如何解決這個問題? – java123999

回答

3

作爲@Ajan評論,Java 8不再有「permgen」堆空間,並且該選項將被忽略。

但這根本不是一個permgen問題。實際上,這很可能是主堆棧已滿的標誌。如果JVM在過去的幾個GC週期內檢測到GC佔總CPU時間的比例過大,則會拋出此異常。這通常發生是因爲堆已經接近完整,並且GC正在越來越頻繁地運行。

因此,問題的「快速修復」是使用-Xmx...選項增加主堆大小。但是,如果真正的問題是你有內存泄漏,那麼這只是推遲了不可避免的。除非你已經理解你的應用程序使用大量內存的原因,否則你應該開始尋找內存泄漏。

+0

感謝您的回覆,-Xmx已經設置爲1024,我應該進一步提高它嗎?我應該怎麼做? – java123999

+0

如果您已經增加了-Xmx,我會建議您在再次增加之前尋找潛在的內存泄漏。 –

+0

謝謝,我會,但編號喜歡看看這個修補程序在此期間的作品,你會建議增加它? – java123999