背景:
我有一组java开发人员,作为我的webapp的一部分。 我在Ubuntu 10.10本地开发,并部署到Ubuntu 10.04LTS服务器(媒体寺(实例))。
他们都运行相同的JVM: Sun JVM 1.6.0_22-b04 。 作为初始化脚本的一部分,每个工人都以显式的Xmx , xms和XX:MaxPermGen设置启动。
然而,本地所有10名员工使用250MB,而在服务器上,他们使用超过2.7GB。
何时/为什么要使用heapmin?
有没有办法在运行Linux或Windows的台式机上“testing”C语言中“volatile”关键字的使用?
运行32位Borland XE2应用下Win 7 64位与/ 3gb交换机(-GF LARGEADDRESSAWARE)?
为什么Windows为其系统地址空间预留1Gb(或2 Gb)?
我不知道如何开始追踪。 我认为Ubuntu(因此,内核)版本可能会有所作为,但我尝试了一个旧的10.04虚拟机,它的行为如预期。
我注意到,机器似乎没有使用内存缓冲区或caching(根据htop ),这似乎有点奇怪,但也许正常的服务器?
(编辑)一些信息:
(server) root@devel:/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) wiktor@beastie:~$ 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的
为什么这么多的应用程序在不使用任何应用程序的情况下分配难以置信的大量虚拟内存?
/ proc / self / maps中的“— p”权限是什么意思?
linux procstat中RES和PRES字段有什么区别?
如何正确测量Linux上的进程内存使用情况?
虚拟内存中NUMA如何表示?
正如我所知道的服务器“java -server”选项是默认的,也许这会带来这个问题。 尝试在客户端上使用-server选项运行