2011-02-04 59 views
3

背景:將影響Java內存使用情況的Linux配置?

我有一組Java背景的工人,我開始我的web應用程序的一部分。我在Ubuntu 10.10上本地開發並部署到Ubuntu 10.04LTS服務器(媒體寺(實例))。

它們都運行相同的JVM:Sun JVM 1.6.0_22-b04。作爲初始化腳本的一部分,每個工人都以明確的XmxXmsXX:MaxPermGen設置啓動。

然而在某些地方,所有10名員工都使用250MB,而在服務器上他們使用的是超過2.7GB。

我不知道如何開始追蹤這個。我認爲Ubuntu(也就是內核)版本可能會有所作爲,但我嘗試了一箇舊的10.04虛擬機,它的行爲如預期。

我注意到機器似乎沒有使用內存緩衝區或緩存(根據htop),這似乎有點奇怪,但也許正常的服務器?


(編輯) 一些信息:

(server) 
[email protected]:/app/axir/target# uname -a 
Linux devel 2.6.18-028stab069.5 #1 SMP Tue May 18 17:26:16 MSD 2010 x86_64 GNU/Linux 

(local) 
[email protected]:~$ uname -a 
Linux beastie 2.6.35-25-generiC#44-Ubuntu SMP Fri Jan 21 17:40:44 UTC 2011 x86_64 GNU/Linux 

(編輯) 比較PS輸出:(ps -eo "ppid,pid,cmd,rss,sz,vsz"

PPID PID CMD       RSS SZ   VSZ 
(local) 
1588 1615 java -cp axir-distribution. 25484 234382 937528 
1615 1631 java -cp /home/wiktor/Code/ 83472 163059 652236 
1615 1657 java -cp /home/wiktor/Code/ 70624 89135 356540 
1615 1658 java -cp /home/wiktor/Code/ 37652 77625 310500 
1615 1669 java -cp /home/wiktor/Code/ 38096 77733 310932 
1615 1675 java -cp /home/wiktor/Code/ 37420 61395 245580 
1615 1684 java -cp /home/wiktor/Code/ 38000 77736 310944 
1615 1703 java -cp /home/wiktor/Code/ 39180 78060 312240 
1615 1712 java -cp /home/wiktor/Code/ 38488 93882 375528 
1615 1719 java -cp /home/wiktor/Code/ 38312 77874 311496 
1615 1726 java -cp /home/wiktor/Code/ 38656 77958 311832 
1615 1727 java -cp /home/wiktor/Code/ 78016 89429 357716 

(server) 
22522 23560 java -cp axir-distribution. 24860 285196 1140784 
23560 23585 java -cp /app/axir/target/a 100764 161629 646516 
23560 23667 java -cp /app/axir/target/a 72408 92682 370728 
23560 23670 java -cp /app/axir/target/a 39948 97671 390684 
23560 23674 java -cp /app/axir/target/a 40140 81586 326344 
23560 23739 java -cp /app/axir/target/a 39688 81542 326168 

他們看起來非常相似。實際上,現在的問題是,如果我在服務器上累計虛擬內存使用量(3.2GB),它是否更能反映2.4GB內存(根據free),但本地使用的虛擬內存合計爲更大的4.7GB,但實際只使用〜250MB。看起來也許記憶不是被積極分享的。 (如果這甚至有可能)

感謝你的幫助,

Wiktor的

+0

是您的服務器64位? – 2011-02-04 06:20:59

+0

是的,但本地客戶端也一樣。 – wmacura 2011-02-04 06:29:19

回答

1

據我所知在服務器上的Java -server「選項是默認的,也許這會帶來這個問題。嘗試在客戶端運行-server選項