2011-02-04 57 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选项