静态变量定义过多有什么影响

TXJ_NO1 2009-12-01 08:09:32
目前正在做一个类似于证券的项目,有近80个商品,每个商品都在不断的进行交易,并且它买的价格和卖的价格都在不断跳动,它的跳动情况是依据商品的交易情况而定的,也就是要实现80中商品的即时报价表,但是这些报价数据又不能直接保存在数据库表中,报价数据基本上每秒刷新一次,如果从数据库不断的取的话肯定不行,非挂掉不可,于是我想出了一种方式,就是每种商品报价表对应一个hashtable,而且定义为静态的,以供多个客户端共享,这样的话就有近80个静态的hashtable保存在内存中,近80个静态hashtable啊,而且每个hashtable里面还保存12个对象,这样做可行不?小弟初次做这种类型的项目,而且还是一个人做,高手指教啊,或者有没有更好的方式来处理这种问题?大虾指教啊、
...全文
736 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
TzSword 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 crazylaa 的回复:]
引用楼主 txj_no1 的回复:
目前正在做一个类似于证券的项目,有近80个商品,每个商品都在不断的进行交易,并且它买的价格和卖的价格都在不断跳动,它的跳动情况是依据商品的交易情况而定的,也就是要实现80中商品的即时报价表,但是这些报价数据又不能直接保存在数据库表中,报价数据基本上每秒刷新一次,如果从数据库不断的取的话肯定不行,非挂掉不可,于是我想出了一种方式,就是每种商品报价表对应一个hashtable,而且定义为静态的,以供多?-


这种实时性要求极高的东东没办法。
我以前做个股票交易。方法跟你的差不多,给你参考下:
我们是读证交所的数据文件来获取价格表的。每支股票的买卖都各有5个价。不过客户要求的不是每页80支股票,只要求20支,说多了眼花。。。扯远了。。。我们是内存中保留了一个队列(自己写的,其实就是Vector)。这个队列存的是用户最感兴趣的20支(可重新配置这20支)。所有的价格啥的读到了就马上刷新队列。如果要看其他的,那就只好从数据库里面读了,因为上交所1000多支股票,不可能全读进来的。
[/Quote]
这个可以试试
crazylaa 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 txj_no1 的回复:]
目前正在做一个类似于证券的项目,有近80个商品,每个商品都在不断的进行交易,并且它买的价格和卖的价格都在不断跳动,它的跳动情况是依据商品的交易情况而定的,也就是要实现80中商品的即时报价表,但是这些报价数据又不能直接保存在数据库表中,报价数据基本上每秒刷新一次,如果从数据库不断的取的话肯定不行,非挂掉不可,于是我想出了一种方式,就是每种商品报价表对应一个hashtable,而且定义为静态的,以供多?-
[/Quote]

这种实时性要求极高的东东没办法。
我以前做个股票交易。方法跟你的差不多,给你参考下:
我们是读证交所的数据文件来获取价格表的。每支股票的买卖都各有5个价。不过客户要求的不是每页80支股票,只要求20支,说多了眼花。。。扯远了。。。我们是内存中保留了一个队列(自己写的,其实就是Vector)。这个队列存的是用户最感兴趣的20支(可重新配置这20支)。所有的价格啥的读到了就马上刷新队列。如果要看其他的,那就只好从数据库里面读了,因为上交所1000多支股票,不可能全读进来的。
Owenini 2009-12-01
  • 打赏
  • 举报
回复
是的哦
zl3450341 2009-12-01
  • 打赏
  • 举报
回复
静态变量运行过程中不被回收
80个没问题的
  • 打赏
  • 举报
回复
80 个啊,呵呵,没问题,没问题。

80 个不是会对你的项目有多大影响,应该是对你的项目没有影响的,呵呵。

如果数据是不断刷新的话,那得控制这些数据库的刷新,其他也没有什么了。
Marty束 2009-12-01
  • 打赏
  • 举报
回复
楼主放心吧,80个没有问题,,客户不会发现的,不会对你项目有多大影响
iskyshop 2009-12-01
  • 打赏
  • 举报
回复
静态变量运行过程中不被回收,直至服务器重启,80个静态变量是不会有丝毫影响的,到JDK5以后,定义8000个应该都不会有任何问题!
_loehuang_ 2009-12-01
  • 打赏
  • 举报
回复
学习!那静态方法呢?一直不太明白?希望高人指点?
大川101 2009-12-01
  • 打赏
  • 举报
回复
或许还有其他的方法吧,没人说下嘛?
bayougeng 2009-12-01
  • 打赏
  • 举报
回复
现在的计算机不是以前了,80个,小意思。放心用吧。
zhaory 2009-12-01
  • 打赏
  • 举报
回复
静态变量定义过多,会使系统内存的资源一直得不到释放!你做的又是证券项目,实时和准确性都有相当高的要求。如果定义静态变量,系统资源会受影响。建议还是不要这样
zml6308 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 warison2008 的回复:]
静态变量一旦定义,将一直存在于整个系统运行的整个过程,java垃圾回收机制,永远不会回收它占用的内存,定义过多必然造成大量占用java虚拟机的内存,影响系统的数据处理过程,甚者造成内存溢出
[/Quote]
swandragon 2009-12-01
  • 打赏
  • 举报
回复
静态变量运行过程中不被回收,直至服务器重启
道光2008 2009-12-01
  • 打赏
  • 举报
回复
静态变量一旦定义,将一直存在于整个系统运行的整个过程,java垃圾回收机制,永远不会回收它占用的内存,定义过多必然造成大量占用java虚拟机的内存,影响系统的数据处理过程,甚者造成内存溢出

81,091

社区成员

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

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