2017-05-11 63 views
0

我正在對付Java Web App中的一個奇怪的OutOfMemory錯誤。僅在Linux環境中使用Java OutOfMemory

我的開發環境:

  • Windows 7的
  • 的Java 7
  • Tomcat的8'-Xms64m -Xmx1024m的論點。

我的測試環境:

  • Linux操作系統Ubuntu亞馬遜EC2實例(2GB RAM)
  • 的Java 7
  • 的Tomcat 7 '-Xms1536m -Xmx1536m - 服務器' 的論點。

我可以測試我的開發環境我的應用程序沒有任何問題,但在我的測試環境中,我得到java.lang.OutOfMemoryError

我不能複製的錯誤,因爲在我的開發環境(比我的Linux的內存更少)不不拋出OutOfMemoryError。

如果需要一些額外信息,告訴我。

在此先感謝。

+1

建議您修改您的開發環境以匹配測試以嘗試複製錯誤。從簡單的東西開始,比如改變你的vm參數來匹配,然後嘗試使用Tomcat 7等。 – Gus

+0

但是在我的win dev中,vm參數比測試環境要低。邏輯說,應該比測試環境崩潰更多.. –

+0

嘗試重現錯誤條件時,刪除環境差異仍然很有幫助。如果您的開發環境不能複製錯誤並進行測試,您可以嘗試更改測試以匹配 - 真正的問題很可能是測試沒有1536MB的連續可用內存來分配 – Gus

回答

0

您有一個EC實例,總共2GB的內存,併爲您的java進程提供1536MB,並將其作爲初始堆大小。您的進程可能沒有那麼多的可用內存,因爲linux系統本身需要內存以及其他可能正在運行的進程。

嘗試減少內存,例如-Xms1024m -Xmx1024m,如果這是運行,你可以嘗試增加它在較小的步驟,但你的過程真的需要所有這些內存?

相關問題