2013-10-31 60 views
0

我正在使用Solaris(Solaris 10 5/08 s10x_u5wos_10 X86)來運行jboss應用程序。Solaris/proc高物理內存usgae

[email protected]:/proc/17197$ ps -ef | grep java 
    root 24685 24670 2 12:13:46 pts/10 225:54 java -Dprogram.name=run_with_profiler.sh -server -Xdebug -Xnoagent -Xrunjdwp:tr 

[email protected]:/proc/24685$ du -sh * | grep G 
1.0G as 
    18G fd 
[email protected]:/proc/24685$ 

[email protected]:/proc/24685$ prstat | grep 24685 
24685 root  1041M 991M cpu0  0 0 4:01:35 51% java/200 

[email protected]:/proc/24685$ df -k 
Filesystem   kbytes used avail capacity Mounted on 
/     124960305 110368903 13341799 90% /
/dev     124960305 110368903 13341799 90% /dev 
/export/home   124960305 110368903 13341799 90% /export/home 
/lib     124960305 110368903 13341799 90% /lib 
/opt     124960305 110368903 13341799 90% /opt 
/platform   124960305 110368903 13341799 90% /platform 
/sbin    124960305 110368903 13341799 90% /sbin 
/usr     124960305 110368903 13341799 90% /usr 
/usr/local   124960305 110368903 13341799 90% /usr/local 
proc      0  0  0  0% /proc 
ctfs      0  0  0  0% /system/contract 
mnttab      0  0  0  0% /etc/mnttab 
objfs      0  0  0  0% /system/object 
swap     6115848  272 6115576  1% /etc/svc/volatile 
/usr/lib/libc/libc_hwcap1.so.1 
        124960305 110368903 13341799 90% /lib/libc.so.1 
fd       0  0  0  0% /dev/fd 
swap     6132272 16696 6115576  1% /tmp 
swap     6115588  12 6115576  1% /var/run 
192.168.150.32:/sftp 461928730 38771266 423157464  9% /sftp 
[email protected]:/proc/24685$ 

爲什麼這個/ proc/pid/fd有很高的物理內存?這在關閉服務器後被清除。

回答

2

使用psprstat來計算進程正在使用多少內存。在/proc上使用du僞文件系統充其量是可疑的。

1

運行'du'on/proc(這是一個虛擬文件系統)是荒謬的。

在它的聯機幫助頁(proc(4))中找到/ proc有很好的描述。

如果你真正的問題是「爲什麼我的Java應用程序使用這麼多的內存?」 那麼你最好檢查一下man頁面,看看profiler 對內存使用有什麼影響。您還應該檢查您使用的是哪個版本的java (在以後的版本中,內存使用率已經大大提高)。這也許值得 看着堆(見pmap)。

然後你應該問問你的開發者他們在做什麼以及是否需要所有的 。