0

有什么好的方法释放内存

asked 2007-07-13 05:22:31 +0800

wsm gravatar image wsm
69 2
我现在的问题是
应用比较复杂,于是每一个用户的session都会增加很多的内存消耗
而且这些都是放在httpsession里面保存的
这样session数量达到100左右的时候, tomcat就出现了内存溢出的问题

有什么办法避免这个问题吗?

谢谢
delete flag offensive retag edit

9 Replies

Sort by » oldest newest

answered 2007-07-13 05:24:47 +0800

wsm gravatar image wsm
69 2
补充一下 session里面保存的主要是zul的组件

另外一个问题: 我想知道,放在grid中的数据是否也会被保存在httpsession里面?
link publish delete flag offensive edit

answered 2007-07-15 21:23:33 +0800

atticcat gravatar image atticcat
192

updated 2007-07-15 21:24:26 +0800

Hi,
ZK是Server Side的Ajax Framework.
也就是說,client只處理ui的呈現,
大部份的Client UI物件都會有相對應的常件存在於server side,
也就是說,在設計上,你可以盡量不要keep太多不必要的物件在ZK的UI物件裏..
或者,要適當的把不會再用到的UI物件給detace掉.
至於TOMCAT記憶體的問題,你可能要調整給tomcat的記憶體 或者用 load balance 的相關機制來分擔.

/Dennis
link publish delete flag offensive edit

answered 2007-07-16 11:10:11 +0800

wsm gravatar image wsm
69 2
非常感谢
嘻嘻

另外我想问一下 比如像grid这样的组件, 如果我们有好几千条数据在grid上
那么这些数据也会被储存吗? 如果会,那么我们应该怎么样处理这种情况呢?
link publish delete flag offensive edit

answered 2007-07-16 20:15:41 +0800

atticcat gravatar image atticcat
192
hi~
如果你使用LiveData的方式.
只有當分頁的row被需要時(瀏覽到該分頁)
才會被renderer給render(create?)出來,
不過,這些UI物件都會被保存起來,不會再被rednerer,
(要處理到不要用的row就detach掉,ZK目前似乎沒這個功能,這樣子作會引發一些re-initial的議題吧.)

至於你說的數據..(也就是你的物件)...
就要看你是怎麼去控制你的程式了...
參考org.zkoss.zul.ListModel ,
他的 iterface要拿的並不是整個array,而是size跟getElementAt

/Dennis
link publish delete flag offensive edit

answered 2007-07-17 03:46:37 +0800

wsm gravatar image wsm
69 2
谢谢 :)

我刚刚试了一下listmodel 跟rowrender
然后我又有了一个问题 :)
就是为了降低内存使用,我想detach那些看不见的row,由于我不能使用page的方式,只能使用scrollable的方式
我如何才能知道哪些row是可见的(scrollable方式下), 哪些row是不可见的(需要detach的)
我试过了visible属性,但是好像不是用的这个属性进行控制的
link publish delete flag offensive edit

answered 2007-07-17 14:51:32 +0800

wsm gravatar image wsm
69 2
或者用 load balance 的相關機制來分擔?

是说用cluster的方式吗
但是cluster不是要求session复制吗 这样每一个session都会复制到
所有使用的tomcat上,那么情况不是没有改变吗 同时session复制的时间不是导致响应时间过长
link publish delete flag offensive edit

answered 2007-07-18 05:02:53 +0800

atticcat gravatar image atticcat
192
Load balance的方法有很多種,有的是不用復制session的.

在samlltalk裏有二篇在講tomcat cluster的,
http://zkoss.org/smalltalks/clusteringI/clusteringI.dsp
http://zkoss.org/smalltalks/clusteringII/clusteringII.dsp

我還沒玩過,
不過你有興趣的話可以試試~~
link publish delete flag offensive edit

answered 2007-07-18 05:04:33 +0800

atticcat gravatar image atticcat
192
對了,順提一下,
detach這個東西,在zk裏不是代表不可見,而是代表destory...
也就是說,
detach一個元件,這個元件則會在client side被拿掉(從 dom tree),
然後,在server side,這個元件就等著被gc..

/Dennis
link publish delete flag offensive edit

answered 2007-07-18 05:25:30 +0800

wsm gravatar image wsm
69 2
谢谢

我刚刚试了一下用terracotta来做cluster,但是好像跟zk有冲突不能使用
看了一下samlltalk里面关于cluster的,不过还是基于session复制的
: - (
link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2007-07-13 05:22:31 +0800

Seen: 652 times

Last updated: Jul 18 '07

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More