2010-07-04 74 views
0

我有一個運行在具有4Gb RAM的64位Ubuntu服務器上的服務器應用程序。 當我設置JVM(我們使用Sun JVM 1.6)這樣的配置參數時:-Xms1024m -Xmx2560m,當啓動應用程序時(它運行在Tomcat 6上),我看到一個奇怪的內存分配。 Ubuntu的「top」命令顯示虛擬內存大小几乎爲3.2Gb。我不明白Ubuntu是否分配了我在啓動JVM時要求的內存,或者Ubuntu可能會將-Xmx值添加到部分交換中,從而獲得這麼大的尺寸。 如果我在32位Ubuntu服務器上運行並配置-Xmx1536m,那麼運行「top」命令時會看到1721m。任何人都可以向我解釋什麼是三角洲,何時來自? 我有其他進程在這些實例上運行,我想了解什麼內存配置我應該爲他們考慮到Ubuntu的「頂部」命令的結果。64位Linux上的JVM配置

在此先感謝,亞歷克斯

回答

0

你嘗試喜歡Yourkit一個探查?

+0

不,我沒有試過輪廓儀。 – Alex 2010-07-04 06:24:46

0

JVM將使用一定量的額外內存用於內部處理的目的 - 這link可以幫助:

還要注意的是常駐生成上漲到老一代結束。還有一個用於內部JVM內存管理的小型代碼緩存50Mb。這意味着總堆初始堆大小= -Xms + -XX:PermSize +〜50Mb,並且最大總堆大小= -Xmx + -XX:+ MaxPermSize +〜50Mb。例如,如果-Xms/-Xmx設置爲512m,並且-XX:PermSize/MaxPermSize設置爲128m,則總VM實際上大約爲700 Mb。