JiveJdon Community Forums
在线560人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » Java多线程 集群 并行模式
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 3 回复 / 1
 发表新帖子   回复该主题贴
hulty

悄悄话
发表文章: 3
注册时间: 2007年07月11日 15:08
在这种情况下如何节约内存使用? 2008年03月06日 16:32 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表 jms(26)      高性能(77)     
近来在做一个模块,用的是一个如下的大概流程:
涉及的主要类:
Task 任务类--自定义
Container 存储的容器类--自定义
外部程序调用我做的模块接口传给我一个String字符串;我将这个字符串解析、封装成一个任务Task,然后将这个任务Task加入Container容器中。后台会启动多个线程去容器Container中搜索任务,然后将任务拿出来处理掉。

现在在实际应用中出现这样一个问题,即外部调用程序给我的任务很多很急,然后所有的任务Task都往容器Container中扔。后台从容器中检出任务并处理掉的线程来不及很快的处理完容器Container中已有的任务,结果导致Container中的东西越来越多,最后出现 OutOfMemory的问题。
各位大侠,如何处理这个问题啊,应该在什么地方加入什么机制来解决这个问题,希望大家多给我出几个主意。
wlmouse

悄悄话
发表文章: 117
注册时间: 2006年11月09日 15:58
re:在这种情况下如何节约内存使用? 2008年04月05日 18:16 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
我觉得这应该就是个队列。你应该合理设置队列大小并在队列满的时候返回一个提示,告诉用户现在系统忙,让用户稍后提交。
banq

悄悄话
发表文章: 9482
注册时间: 2002年08月03日 17:08
回复:在这种情况下如何节约内存使用? 2008年04月07日 10:16 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
需要扩充处理性能:将放入和拿出处理分两个服务器来实现。使用JMS这样带集群的处理架构。

newthinker

悄悄话
发表文章: 26
注册时间: 2007年10月10日 10:49
回复:在这种情况下如何节约内存使用? 2008年11月05日 17:38 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
我觉得这样处理比较简单:
1,Task最好设计的很短小,在很短时间内处理完毕。
2,Task要能被持久化,Container一旦发现融入了太多Task,便把超出队列长度的剩余Task持久化。即便应用重启,Container也可以加载持久化上下文,并从中取出Task(回鲜过程)。
3,处理Task的线程(Work线程)可使用Concurrent包线程池管理。
这个主题有 3 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
  发贴前查询 标签列表勿重复发表问题

RSS 手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com
anti spam