论坛首页 入门技术论坛

什么时候使用 static 最恰当

浏览 7100 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-06-27  
从网上和书上找了好多资料,就想看看什么时候使用static最恰当,也就是在什么条件下使用static会给系统带来最大的优化;结果很出乎我的意料,竟然没有一篇文档会直接回答这个的问题,整的我是一头雾水。一气之下自总结一下(注意:之所以把它放到论坛是因为我对此无法确定,请大家多多关照讨论):
    static的优点:节省内存(class 中static 方法 变量 在类被虚拟机加载的时候就被分配了内存,以后所有调用,就从这里调,不同虚拟机除外)。(大家补充)
    static的缺点:不过他们修饰的方法、变量被没被使用,只要类加载就开辟了他们自己一片小天地。(大家修正补充);
    综上所述:如果不是经常使用的方法或变量,那么就不应该用static。(大家补充)。
   发表时间:2007-06-27  
没有必要   内存方面  从硬件上克服一下就可以了
带来的问题在实际中是很难发现的  代价太大
能不用就不用
0 请登录后投票
   发表时间:2007-06-27  
ddandyy 写道
没有必要   内存方面  从硬件上克服一下就可以了
带来的问题在实际中是很难发现的  代价太大
能不用就不用
您所说的问题,通常指什么方面的?
0 请登录后投票
   发表时间:2007-06-27  
多线程       
0 请登录后投票
   发表时间:2007-06-27  
ddandyy 写道
多线程       
  如果多线程会让static出现问题,那么web应用程序里不能用static,这显然是不对的嘛!
  虽然是多线程,但是用的是同一个虚拟机,当多线程访问该类的时候,也是要到虚拟机中检测该类是否已经存在,如果存在,不加载;否则,加载;这不会对static有任何问题。
   web本身就是多线程,在我们的项目中用过我没看到出现了任何问题,如果多线程出问题,那么有没有什么测试程序。
0 请登录后投票
   发表时间:2007-06-27  
static的本意就是类共享的成员,和你说的这些都没有啥关系。
对于一般类,类实例的所有成员需要共享的变量就用;另外就是工具方法都是static的。
0 请登录后投票
   发表时间:2007-06-27  
明白什么叫会用就行了!
0 请登录后投票
   发表时间:2007-06-28  
public class ByGoodsOrderStatusAction extends BaseAction {
    private static Map map = new HashMap();

    public ActionForward first(ActionMapping mapping, ActionForm form, SessionWrapper session, HttpServletRequest request, Map requestMap, HttpServletResponse response) throws Exception {
         map.put("111",requestMap.get("111"));

         map.get("111");
    }



这个东西就会有问题   当然也不完全是和static有关 而是和全局变量有关  而且这个也和框架有关  比如我们用的是struts 1 就会有问题  ww是否有问题没有试过
0 请登录后投票
   发表时间:2007-06-28  
小子我愚钝,没看出什么问题,请ddandyy 做进一步解释,我用过webwork好像没有问题(idc跑着呢,至今未发现)。
0 请登录后投票
   发表时间:2007-06-28  
hamburg 写道
小子我愚钝,没看出什么问题,请ddandyy 做进一步解释,我用过webwork好像没有问题(idc跑着呢,至今未发现)。


webwork的action是线程安全的。

另外,多线程只对共享数据产生影响。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics