MultiProcess进程池的设计(一)概述

     多进程设计在传统的java程序员是一个非常陌生的名词,因为一般来说java程序都是主要启动一个java.exe而不会启动太多的进程。单java遇到异步的程序设计要求的时候,通常考虑的是多线程的设计。但是多线程设计会造成系统不稳定的主要原因。

    在我曾经的参与的一个项目中,他们开发第一版系统的时候就已经把工作做完,但是系统每次一部署时候,系统通常跑不过3天。tomcat都会造成内存溢出而死掉。这个系统内存不稳定情况在整个团队找了一个月时候也总于找到原因。最终我们在系统一个模块找到一个调用xml生成图片的类,发现这个功能造成内存溢出,jvm无法很好回收这个模块的内存。因为系统的需求是每3分钟分析10几个xml生成图片。面对这么情况一时间团队无计可施,所有办法都只是可以解决一时权宜之计。

    后来就提出了多进程代替多线程绘图的方案。用独立的进程获取指定的xml的数据来绘图,并且把绘图的结果返回指定位置。那么就可以大大减轻tomcat的内存负载,利用系统的内存控制。

    经过总结,我觉得多进程的设计应该用于一下几个方向:

   (1)大数据量的绘图;

   (2)复杂的持久的算法分析;

   (3)大数据量的算法压缩;

   (4)大数据量的数据分析;

   (5)独立的传输通道;

 

   多进程的使用要面对问题也会很多,总结一下有一下几点:

   (1)多进程的启动(jar、exe、class、bat);

    (2)多进程的关闭;

    (3)进程在运行过程中的数据动态交流;

    (4)进程的数据同步,进程锁和进程信号量;

    (5)进程加入服务后的动态交互;

    (6)跨域后的进程的交互;

 

    多进程的设计的流程图(暂时已完成的功能):

 

进程池的svn地址:

http://code.google.com/p/ken-javaframeword/source/browse/#svn%2Ftrunk%2FJavaFramework2.5%2Fsrc%2Fcom%2Fshine%2FMultiProcess


MultiProcess进程池的设计(二)Jar进程启动和关闭 http://blog.csdn.net/arjick/article/details/7011490

MultiProcess进程池的设计(三)主进程和子进程间的通信   http://blog.csdn.net/arjick/article/details/7022212



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值