急!页面大数组传递的问题

hant 2005-12-14 11:33:33
最近在做项目的时候,涉及到一个大页面数组参数传递到后台的问题,
具体问题如下:
软件系统环境:JDK1.5+Tomcat 5.5.9
我们在页面上列出了几千个供用户选取的选项,我通过FORM将用户选取的SELECTBOX的值传入后台,现在系统在用户选取的记录值小的时候300多个的时候没有出现什么问题,但2000多个都选的时候,传递到后台TOMCAT上过了一会,提示JAVA HEAP EXCEPTION,内存溢出,
不知道在实现这样大的数组页面传递的时候,有没有什么比较好的方法呀?
谢谢!
...全文
131 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
mark
guanjm 2005-12-15
  • 打赏
  • 举报
回复
几千个给用户选择?用户怎么选,要选死的,不知你们怎么想的,要么你分表单提交,1到300,FORM1 300到600 FORM2,然后分不同的ACTION,这样不是解决了吗?但你这几千个给用户选择,我是用户肯定教你改,这样选要死人的
王洲 2005-12-15
  • 打赏
  • 举报
回复
分页吧!~~
或者升级服务器呵呵开玩笑的
masse 2005-12-15
  • 打赏
  • 举报
回复
另外,分页也是一个办法。
比如管理用户。
2000个用户,你可以分页显示,一次让用户管理50个或者100个。
当然,这样会破坏你程序的现有结构

还有,比如有2000个checkbox,用户选中了1900个,
你为什么要传递这1900个,而不传递没有选中的100个呢?
在server端,你为什么要处理这选中的1900个,而不去处理没有选中的这100个呢

这些优化,都可以在client完成。我只是举个例子,呵呵。
hant 2005-12-15
  • 打赏
  • 举报
回复
目前通过修改TOMCAT的最大虚拟内存大小,可以实现前台提交到后台的过程.
谢谢大家给的意见!多谢!
禽兽v5 2005-12-15
  • 打赏
  • 举报
回复
只提交改动过的值不久可以了?
masse 2005-12-15
  • 打赏
  • 举报
回复
主要还是server端的优化,要想办法降低server的压力,比如把压力分散给client
这样并发的情况下,效率才可能好
masse 2005-12-15
  • 打赏
  • 举报
回复
你用javascript拼装,压力给了client,
会好很多的,你改成request.getParameterValue(),我觉得不是优化,相反,效率降低了。

服务端直接解析一下,消耗空间很小,消耗的时间也是毫秒级别,
如果你直接在服务端用request.getParameterValue(),效果不一定好
我以前做ldap的时候,觉得对enum的操作非常消耗时间,所以最好考虑一下后台的优化

比如给数据库的时候一次提交,在数据层接口处理等等,
减少数据的传输,减少缓存的消耗。

你这个还是单用户的情况吧?
如果现在靠buffer等来解决了,并发的时候你怎么办?

2000多个数据不算多。
hant 2005-12-15
  • 打赏
  • 举报
回复
我现在的tomcat内存大小设置为512M,不知道这个内存调整的幅度是怎么样的呀?
little06 2005-12-15
  • 打赏
  • 举报
回复
一次的输入选项过多
不是好办法

以前见过相似的问题
好像是改Tomcat的运行内存大小
网络精灵 2005-12-15
  • 打赏
  • 举报
回复
用分段处理行吗?就是每隔多少条就处理一次,直到处理完。自己没实践过,不知行不行,呵呵。
常遇道 2005-12-15
  • 打赏
  • 举报
回复
改Tomcat的运行内存大小
分段提交

yeyinyue 2005-12-15
  • 打赏
  • 举报
回复
试试用hashmap+session,在传递页面把数组存到hashmap,再将hashmap存进session。
如:HashMap xxx = new HashMap();
xxx.put("aaa",aaa);
xxx.put("bbb",bbb);
……
session.setAttribute("xxx",xxx);
在处理页面则从session里面取数据。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧