linux java 进程内存使用情况_Linux:哪个进程占用了所有内存?

本文探讨了一台拥有4GB RAM的Linux服务器,在运行Java应用程序时仅能利用约1.8GB内存的问题。文章详细分析了内存使用情况,并提出了针对Java进程内存限制的调整策略。

我们的

linux服务器上有4GB,但我们目前只能使用~1.8GB的

java服务器,这是下面列出的第一个java进程. (200 MB是免费的,所以我们最大可以使用1.6GB 0.2GB)

当我们使用更多时,机器崩溃了.因此我们指定-Xmx1600m和-XX:MaxPermSize = 200m将服务器RAM限制为1.8GB.但我们需要更多内存!剩余的RAM在哪里消失了?

这是根据内存使用量排序的程序输出(通过大’M’):

Mem: 4083952k total,3857856k used,226096k free,169320k buffers

Swap: 2104504k total,176k used,2104328k free,1939080k cached

PID USER PR NI VIRT RES SHR S %cpu %MEM TIME+ COMMAND

28155 root 16 0 1835m 1.6g 7848 S 2 40.5 47:36.26 java

19609 root 16 0 45996 7052 3148 S 0 0.2 14:35.97 httpd2-prefork

6802 root 16 0 46132 5916 1932 S 0 0.1 0:00.09 httpd2-prefork

6866 root 15 0 46132 5916 1932 S 0 0.1 0:00.07 httpd2-prefork

正如您所看到的,httpd2-prefork进程有很多(甚至更多).但即使我累积了字节(25 * ~46KB = ~1MB),它也永远不会那么大.

free -m print:

total used free shared buffers cached

Mem: 3988 3768 219 0 165 1894

-/+ buffers/cache: 1708 2279

Swap: 2055 0 2055

我的错误在哪里?我可以调整服务器以为java进程提供更多RAM吗?

顺便说一句:我们没有使用像here这样的虚拟机

更新

正如评论中指出的那样:它只是一个32位内核:-((通过uname -a).

所以我至少只能使用3GB?

但服务器本身似乎是64位?由于输出中的lm(长模式)?

grep flags /proc/cpuinfo

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pni monitor ds_cpl cid cx16 xtpr

...

Here是另一个非常相似的问题.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值