iteye_775 2009-01-05 10:11
浏览 212
已采纳

Linux下Java程序多进程问题?

我们有一个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了。

真是比较郁闷,查了很久~







谢谢各位的帮助~

  • 写回答

7条回答 默认 最新

  • 不良校长 2009-01-06 16:35
    关注

    你用JCONSOLE连接用户的机器看看, 总共有几个线程了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝