level 1
我访问我的一个页面,每访问一次,创建一个类对象,然后调用他的方法返回数据。如果有1万个人同时访问,同时创建了1万个对象,那内存不就没有了。我想到做成静态的方法,或者把类做成单例的,在内容中永远就一个对象。到底怎样做才好。为什么?
2010年12月18日 02点12分
1
level 1
一个对象,容易引起数据错乱。你也可以写成session试一下……
2011年02月24日 03点02分
3
level 1
你可以先在服务器端生成一个对象,然后每当用户访问时,自动把这个分配给用户,有点池的概念,但是就是这么个思想,你准备好,谁来了你给谁。。。当然这样做问题也多的是。。。
2011年05月12日 03点05分
5
level 2
这个会了么?楼主,如果不会的话,我可以帮你解决的哦,你嫁给我吧。也许你已经嫁人了,但是我也回复下,给不会的人看吧。 做成静态的直接用static关键字声明就是了,但是注意该静态对象最好声明为final,个人比较喜欢单例模式,因为一个程序里面static对象太多的话,我总是感觉不是很好的。对启动的时候,对jvm的内存有基本要求,单例模式在需要的时候才创建对象,对于启动会快些。如果你的服务器很好的话,上面就不必考虑了。当然将对象放在session,application 级别也是能够解决该问题的。但是这些都必须注意线程安全的。
2011年06月06日 04点06分
6
level 1
这种情况下采用单利模式不好,线程不安全,如果访问的人很多,很容易造成错误和死锁的情况。
2011年06月08日 07点06分
7
level 1
如果你会Spring的话呢,可以使用Spring做对象生命周期的管理容器,这样很方便也很快捷,不过建议你在Spring中配置对象的生成方式为原型模式比较好,要考虑线程安全。
2011年06月08日 07点06分
8
level 2
线程是否安全,这个是可以编码控制的吧。 spring 的生命周期.... 我觉得没必要。从楼主发的需求来看,增加spring 不过是增加系统的复杂性罢了。
2011年06月08日 09点06分
9
level 1
这个问题问的有点......
你如果是访问数据库这些。你完全可以参考spring的Ioc
而如果是处理web请求,建议不是多实例。。。。
不可能同时有并发1W的访问量
2011年06月22日 09点06分
11
level 1
你完全多虑了,如果你程序不是分布式的架构怎么可能同时支持1w,tomcat默认才并发20个连接。而且你创建对象处理完请求后这个对象就是垃圾对象了,会被垃圾收集器自动回收的。
话说回来就算你程序能支持1w的并发量那也说明你起码服务器都是N台,每台服务器并发个几千也就几千的对象完全没问题的。
而且给你一个建议在你不是很了解底层jvm机制的时候不要凭你自己“理所当然”想的为了提高什么效率啊去想一些自认为
正确的
办法。往往会适得其反。
2012年03月26日 10点03分
12