4

我們有一個運行良好的應用程序,一年。它是一個Web應用程序,運行在Windows Server 2003企業版Service Pack 2上的Microsoft Cluster下的Tomcat 5.5 + JDK 1.5下。該服務器具有11Gb的RAM(我知道它沒用!),其描述如下:「Physical Address Extension」 :我不知道這意味着什麼。無法爲Java分配足夠的堆空間

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

自上週以來,該服務不希望再開始與以下錯誤消息停止:「無法分配足夠的堆空間」。

我們嘗試了幾個測試:

  • java -Xmx1024m -version =>無法
  • java -Xmx758m -version =>無法
  • java -Xmx512m -version =>傳遞

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

另外我不明白爲什麼它工作正常,然後突然停止工作!看來,操作系統是現在無法分配連續的內存,還是其他什麼東西(頁面文件的大小,用戶內存分配,...)

這是相當困難的知道,如果事情發生了轉變(OS補丁,配置,... ),因爲Web應用程序正在客戶服務器上運行,我們無法訪問它。

+2

'-Xmx1024m -Xmx128m',真的嗎?你的意思是'-Xmx1024m -Xms128m'(注意-Xms)? – Thomas 2011-04-26 09:25:14

+0

物理地址擴展:http://en.wikipedia.org/wiki/Physical_Address_Extension - 這意味着32位處理器可以訪問超過4 GB的RAM。 – Thomas 2011-04-26 09:26:44

+0

另外我忘了說我們在「C:\ Program Files \ Java \ jre1.6.0_07」中安裝了JRE 1.6。 JDK(即1.5)不在系統路徑中,但上面的測試使用JDK而不是JRE。 Tomcat也配置爲使用JDK。 – 2011-04-26 09:27:37

回答

0

此外,我不明白爲什麼它工作得很好,突然停下來工作!看來,操作系統是現在無法分配連續的內存,還是其他什麼東西(頁面文件的大小,用戶內存分配,...)

這是相當困難的知道,如果事情發生了轉變(OS補丁,配置,... ),因爲Web應用程序正在客戶服務器上運行,我們無法訪問它。

那麼,你應該檢查有多少內存可用,如果它不夠用,你應該檢查什麼是消耗那麼多的內存。

除此之外,你必須跟你的客戶,瞭解他們是否確實更改服務器,如果是這樣,他們做了什麼變化。

不知道更多這真的很難達到不可能給你爲什麼不能分配更多的內存任何有資質的諮詢。

+0

可用內存大約9Go – 2011-04-26 09:48:48

6

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

你不會得到這個問題在64位操作系統,你甚至可以分配的內存,遠遠到JVM以及(如果您使用的是64位JVM)

+0

......我知道這個上邊界。當我試圖在32位XP的怪物筆記本電腦上預編譯一些weblogic的東西時,這真是一個驚人的表現。 4安裝物理內存,沒有辦法抓住更多的1.4演出,這是不夠的。 – 2011-04-26 09:43:40

0

這可能意味着該操作系統可以沒有分配足夠的連續內存。操作系統重新啓動後,您仍然遇到問題嗎?系統是否報告它有11 Gb的RAM?Windows的PAE並不是最好的,所以它可能會導致問題。嘗試更新到更新的JDK,如果失敗了,你需要一個64位機器。

+0

我們的客戶說我們他重新啓動了服務器。所以我想他做到了! – 2011-04-26 10:18:51

+0

我們的客戶說我們他重新啓動了服務器。所以我想他做到了! 但我真的不明白爲什麼它上週工作,突然它不能。我還運行了一個簡單的VMWare虛擬機,只有一個內存(Windows XP),我能夠分配高達1.2Go(java -Xmx1200m -version「) 我知道,沒有關於客戶在服務器上做什麼的信息, 是否有任何實用工具可以看到(以圖形方式爲例),OS上有多少連續內存? – 2011-04-26 10:24:37

+0

@Eric Talx:您必須設置-Xms1000m(啓動內存),因爲只設置最大值不會分配太多的內存 – 2011-04-26 11:23:07

1

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

這似乎是由於Windows安全更新!這個微軟安全更新阻止Java應用程序分配大量的連續內存的...

點擊此處瞭解詳情:http://support.microsoft.com/kb/971812

如果補丁解決這個問題,我們將檢查。 敬請期待

+0

我在Windows 7(開發人員機器)上遇到類似的問題,曾經工作的應用程序開始出現問題,我必須降低內存設置。我只看到安全公告中提到的Windows Server版本... – 2013-08-16 13:25:59

相關問題