簡體   English   中英

無法為Java分配足夠的堆空間

[英]Could not allocate enough heap space to Java

我們有一個運行良好一年的應用程序。 它是一個Web應用程序,在Windows Server 2003企業版Service Pack 2上的Microsoft Cluster下的Tomcat 5.5 + JDK 1.5下運行。服務器具有11Gb的RAM(我知道它沒用!),具有以下描述“物理地址擴展” :我不知道這意味着什么。

Tomcat服務配置了以下參數: -Xmx1024m -Xms128m

從上周開始,該服務不再需要啟動並停止並顯示以下錯誤消息:“無法分配足夠的堆空間”。

我們嘗試了幾個測試:

  • java -Xmx1024m -version =>失敗
  • java -Xmx758m -version =>失敗
  • java -Xmx512m -version =>通過

因此,我們可以使用更少的內存來獲得最大堆大小,但這不是一個可接受的解決方法,因為用戶數量將在幾個月內增加,我們需要將最大堆大小設置為1024Mb。

另外我不明白為什么它工作正常然后突然停止工作! 似乎操作系統現在無法分配連續內存或其他內容(頁面文件大小,用戶內存分配......)

由於Web應用程序在客戶服務器上運行而我們無法訪問它,因此很難知道某些內容是否發生了變化(操作系統補丁,配置等)。

Java需要連續的內存。 在32位操作系統上,這限制了Windows在1.2到1.4 GB之間。 但是,如果由於正在運行的其他程序而導致內存碎片化,則可能會占用更小的內存區域。

使用64位操作系統不會出現此問題,您甚至可以為jVM分配更多內存(如果使用64位JVM)

我有一些關於我的問題的消息。

這似乎是由於Windows安全更新! 此Microsoft安全更新可防止Java應用程序分配大量連續內存...

有關詳細信息,請訪問: http//support.microsoft.com/kb/971812

我們將檢查補丁是否解決了這個問題。 敬請關注

另外我不明白為什么它工作正常,突然停止工作! 似乎操作系統現在無法分配連續內存或其他內容(頁面文件大小,用戶內存分配......)

由於Web應用程序在客戶服務器上運行而我們無法訪問它,因此很難知道某些內容是否發生了變化(操作系統補丁,配置等)。

好吧,你應該檢查一下可用的內存量,如果還不夠,你應該檢查消耗那么多內存的內存。

除此之外,您必須與您的客戶交談並了解他們是否對服務器進行了更改,如果是,他們確實改變了什么。

如果不了解更多內容,就不能分配更多內存而提供任何合格建議真的很難。

這可能意味着操作系統無法分配足夠的連續內存。 操作系統重啟后你還有問題嗎? 系統是否報告它有11 Gb的RAM? Windows的PAE實現並不是最好的,因此可能會導致問題。 嘗試更新到更新的JDK,如果失敗,則需要64位計算機。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM