2009-10-21 68 views
0

當我開始一個空的JBoss 5.1將使用此內存量:JBoss的內存使用情況?

在默認配置

  1. 在Windows〜530MB
    在AIX〜220MB

  2. 在Web配置


    在Windows 〜320Mb
    在AIX上〜100-130Mb

爲什麼AIX和Windows上的內存使用量有很大差異?
JBoss的版本是一樣的。
Java 1.5。

+3

而你讓「美國人不知道如何與外國人交往......」 – Benjol 2009-10-21 11:01:49

+0

@Alex Sexton不是俄語 - 烏克蘭語;) 對不起,我的英語不好。 – 2009-10-21 11:05:29

+0

你如何以及何時測量內存量? – 2009-10-21 12:12:37

回答

2

最明顯的可能性是不同的啓動腳本分配不同數量的內存。檢查腳本中的-Xms選項。

此外,不同的JVM具有不同的默認存​​儲器配置中,AIX一個可以具有比窗口中的一個低得多的默認值。

+0

內存設置相同:run.conf:JAVA_OPTS =「 - Xms128m -Xmx512m -XX:MaxPermSize = 256m -Dorg .jboss.resolver.warning = true -Dsun.rmi.dgc.client.gcInterval = 3600000 -Dsun.rmi.dgc.server.gcInterval = 3600000「run.conf.bat:set」JAVA_OPTS = -Xms128M -Xmx512M -XX: MaxPermSize參數= 256M 「 – 2009-10-21 11:50:50

3

也許這是因爲run.batrun.sh已被不同的人寫出。無論如何,這些設置只是初始設置,沒有人能預測用戶將要做什麼以及他們需要什麼設置。只要忘記差異,根據需要調整它。

編輯:根據評論,JVM設置在Windows和AIX下是相同的。然而,msmx參數不具有相同的值,所以如果需要的堆大小會隨着時間增長,這是非常不可能預測的方式和時間(這取決於使用情況)。我會使用相同的值msmx來避免這種情況。也就是說,操作系統監視工具(Windows perfmon或任務管理器或Unix上的ps/top)報告JVM進程的內存大小(即在windows上爲java.exe,在Unix上爲java)。

方法存儲器[...]包括對象堆加額外的存儲空間,由於該方法的可執行文件,該線程運行時堆棧空間,線程對象堆空間,產生由JNI和對象所採取的任何空間來自JNI以及任何其他JVM空間,如PERM空間,這些空間是在大多數JVM中加載類的地方。 [...]使用操作系統監視器來觀察進程大小,並確保它適合RAM。

但是,實際上,由於每個操作系統管理內存的方式,我不知道ps和任務管理器將報告同樣的事情。

一些參考:

EDIT2:檢查你的JVM進程舒適,適合到RAM中是一回事。但是檢查你的JVM是否調優(例如不太長的主要GC)是另一回事。你不會用ps或任務管理器來衡量第二件事情,你需要爲此分析你的堆。

+0

@Pascal Thivent 內存設置是一樣的: run.conf:JAVA_OPTS =」 - Xms128m -Xmx512m -XX:MaxPermSize參數=256米-Dorg.jboss.resolver.warning =真-Dsun.rmi。 dgc.client.gcInterval = 3600000 -Dsun.rmi.dgc.server.gcInterval = 3600000「 run.conf.bat:set」JAVA_OPTS = -Xms128M -Xmx512M -XX:MaxPermSize = 256M「 – 2009-10-21 11:50:19

+0

那麼,'ms'和' 'mx'沒有相同的值,所以說如何做到這一點是不可預測的堆將會增長。我可以問你一個問題:你關心什麼? – 2009-10-21 12:14:05

+0

在測試PC上JBoss +我們的應用程序使用太多的內存。 如果我部署我們的應用程序 - 它使用大約1GB。 500Mb = JBoss + 500Mb = OurApplication 我試着瞭解是否有可能減少JBoss使用的內存量。 在測試PC上我們有JAVA_OPTS ==「 - Xms256m -Xmx1024m」 – 2009-10-21 12:24:44