0

我正在使用 Solaris (Solaris 10 5/08 s10x_u5wos_10 X86) 来运行 jboss 应用程序。

root@dev3-be3:/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

root@dev3-be3:/proc/24685$ du -sh * | grep G
 1.0G   as
  18G   fd
root@dev3-be3:/proc/24685$

root@dev3-be3:/proc/24685$ prstat | grep 24685
24685 root     1041M  991M cpu0     0    0   4:01:35  51% java/200

root@dev3-be3:/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
root@dev3-be3:/proc/24685$

为什么这个 /proc/pid/fd 有很高的物理内存?这在关闭服务器后被清除。

4

2 回答 2

2

使用psorprstat来计算一个进程正在使用多少内存。du在伪文件系统上使用/proc充其量是可疑的。

于 2013-10-31T09:32:44.580 回答
1

在 /proc(它是一个虚拟文件系统)上运行 'du' 是没有意义的。

/proc 的联机帮助页 proc(4) 中有一个很好的描述。

如果您真正的问题是“为什么我的 java 应用程序使用这么多内存?” 那么您最好检查手册页以查看分析器对内存使用的影响。您还应该检查您正在使用的 java 版本(内存使用在以后的版本中得到了很大改善)。也可能值得研究堆(参见 pmap)。

然后,您应该询问您的开发人员他们在做什么以及这是否都是必要的。

于 2014-02-04T03:35:18.200 回答