- 论坛徽章:
- 0
|
我的程序使用以下方式启动:
nohup java -Xms4m -Xmx16m -cp $HOME/lib/ 。。。
使用以上方式启动后,使用ps列出了多个线程,
不明白为什么ps会列出如此多的子进程
之后,我想查看我的程序当前所使用内存空间的情况
根据pid,打开 /proc/$pid/status文件
发现这里面显示的内存使用情况和我分配的有很大的差值
文件内容如下:
Name: java
State: S (sleeping)
Tgid: 30085
Pid: 30085
PPid: 1
TracerPid: 0
Uid: 1009 1009 1009 1009
Gid: 100 100 100 100
FDSize: 256 /FD的最大值?
Groups: 100
VmSize: 210520 kB //该进程总共所占的虚拟空间的总数
VmLck: 0 kB //锁定的进程虚拟空间数
VmRSS: 19836 kB //RSS空间
VmData: 155944 kB //DATA空间
VmStk: 2032 kB //栈空间
VmExe: 56 kB //TEXT空间
VmLib: 7040 kB //动态链接库空间
SigPnd: 0000000000000000//下边三项是pend, block, ignore的信号量的对应位
SigBlk: 0000000000000004
SigIgn: 8000000000000003
SigCgt: 1000000380005ccc
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
因为单独有很多appliction启动,都有这种情况,所以占用了大量的内存,使用free命令发现cache怎么也不能释放
free
total used free shared buffers cached
Mem: 4011076 3601104 409972 0 320044 2351272
-/+ buffers/cache: 929788 3081288
Swap: 8251336 4964 8246372
请教一下这里的高手,已经检查了程序,资源释放这些问题都没有,就是不知道程序为什么占用这么多的内存 |
|