我们有一个Java项目是在linux下部署的。
以前都没有发现什么问题,但是最近在某个客户Linux机器(RedHat4企业版)上运行java后出现了大量的java进程现象,而且很快就将内存耗尽了。
查了相关资料,说是Java多线程在Linux环境下会采用多进程处理,但是也不至于每次都启动一个新的java进程吧,而且每次启动一个进程后都要耗掉不少内存。
是不是Linux下需要修改什么配置?
谁能帮忙看下,谢谢~
问题补充:
有没有什么办法让它不要启动那么多的进程?
问题补充:
有没有什么办法让它不要启动那么多的进程?
问题补充:
有没有办法不让它启动那么多的进程,太消耗资源了~
问题补充:
也查了相关的一些资料。
出现这种问题的资料都是很早以前的,说是跟Linux内核有关系,我查了,客户的Linux是2.6内核的,NPTL版本是2.3.4,照理应该不会有这样的问题。
一楼说我创建了太多的线程,我在Redhat 4上面写了个创建线程的测试代码,Xmx500m的情况下到6000个线程,没有出现上述情况。
真的是很头痛,不知是怎么回事?
现在连是什么问题都没有找到,只是在不停的试,就差换jre和操作系统了~
问题补充:
活动线程: 336
峰: 374
守护线程: 60
已启动的线程总数: 626
当前类已装入: 9,007
已装入类的总数: 9,044
已卸载类的总数: 37
当前堆大小: 129,259 Kb
堆大小的最大值: 986,112 Kb
分配的内存: 297,024 Kb
这是用jconsole观察的结果~
线程一直保持在300-400之间~
后台用:ps -ef|grep java
可以查看到有5个相同的进程存在
CPU使用率比较高,保持在50%到90%之间~
初步怀疑可能某个线程占用率很高或者请求阻塞了~
线程列表里面看到有大量线程是http的~
但是300-400的线程也不多吧~
问题补充:
问题似乎已经找到了,还要在观察一下~
初步估计是:Redhat 4与JRE1.6版本不兼容造成的,改用低版本的JRE1.5就OK了。
真是比较郁闷,查了很久~
谢谢各位的帮助~

Linux下Java程序多进程问题?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
7条回答 默认 最新
- 不良校长 2009-01-06 16:35关注
你用JCONSOLE连接用户的机器看看, 总共有几个线程了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报