2013-08-30 52 views
0

對於使用Java(Weka)運行的大型數據挖掘實驗,我試圖按照所述分配更大的堆大小以提高性能。增加JVM堆大小而沒有效果 - 回顧已定義的選項

我通過在菜單中設置以下選項「運行>運行配置>參數」這樣做:

enter image description here

[含有待確實運行代碼的應用程序是所選擇的一個。

有兩件事情讓我困惑:

  • 性能並沒有增加。如果額外的內存不能使程序運行速度更快,仍然可以嗎?

  • 即使我設置超出我的機器RAM(4096米)的值,它不會產生任何錯誤。這是正確的還是應該有一個?

+2

爲什麼你認爲增加堆應該使程序運行得更快? –

+0

您可以打開活動監視器並查看實際的java進程正在消耗多少內存。 Mac OS X可能會限制大小以使計算機上的所有內容都能正常運行.JVM無法獲得比Mac OS X更高的內存 – Alex

+1

您應該首先使用'jvisualvm'來分析應用程序的內存和CPU使用情況。 –

回答

0
  1. 增加內存永遠不會提高性能,如果你的程序並不需要那麼多的內存。所以首先確保你的程序需要那麼多的內存。

  2. 理解的XMS的含義和XMX

XMS(初始堆尺寸)是初始堆尺寸,以便系統將分配用於初始使用,並通過指定XMX這麼多堆(最大堆大小)您告訴系統這是您可能使用的最大堆大小。這就是你的系統沒有產生任何錯誤的原因。

+0

感謝您對XMX的評論。不過,我想如果CPU和RAM都沒有完全使用(請參閱上面我的評論中的屏幕截圖),計算機不會使用其全部資源。有什麼辦法解決這個問題嗎? – ateich

+0

你的意思是你想讓你的系統利用所有的資源? – ankit

+0

沒錯。現在我需要使用jvisualvm(上面提到的)來檢查堆問題,並且它能夠正常工作。使用的最大堆大小約爲2GB,CPU使用率爲30%。那麼什麼是瓶頸? RAM的速度?任何方式來加快它呢? – ateich