关于java 静态变量生命周期问题

dokia123 2011-08-09 11:08:38
问下,当一个类被加载后,它的静态变量生命周期是什么,是整个应用程序执行结束(比如java web程序,从类加载到服务器关闭还是该线程执行完毕)还是别的什么?
...全文
604 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dokia123 2011-08-10
  • 打赏
  • 举报
回复
总计测试了下,跟5L说的差不多,不过还是有些疑问唉。
bijanen19861113 2011-08-09
  • 打赏
  • 举报
回复
嗯嗯,是跟类的生命周期相关..
dokia123 2011-08-09
  • 打赏
  • 举报
回复
这个类从最开始被加载以后就一直在内存里吗?那难道所有的类被加载了都会一直在内存还是只有静态变量的类才会一直在内存。[Quote=引用 5 楼 shine333 的回复:]

取决于类加载器。如果换了一个类加载器,这个类会被重新加载,相对应的,类中的static也会重新初始化。不过这种情况,对大部分人来讲,在平时写代码的时候,不会碰到,所以如果搞不清楚,那就直接理解成一直存在,直到服务器关闭

anyway,和线程无关
[/Quote]
shine333 2011-08-09
  • 打赏
  • 举报
回复
取决于类加载器。如果换了一个类加载器,这个类会被重新加载,相对应的,类中的static也会重新初始化。不过这种情况,对大部分人来讲,在平时写代码的时候,不会碰到,所以如果搞不清楚,那就直接理解成一直存在,直到服务器关闭

anyway,和线程无关
dokia123 2011-08-09
  • 打赏
  • 举报
回复
这...貌似你的这些刚才我在百度的时候看到了。没看清我的问题需求唉。[Quote=引用楼主 dokia123 的回复:]
问下,当一个类被加载后,它的静态变量生命周期是什么,是整个应用程序执行结束(比如java web程序,从类加载到服务器关闭还是该线程执行完毕)还是别的什么?
[/Quote]
wangjiangbo2 2011-08-09
  • 打赏
  • 举报
回复
我认为应该是到服务器关闭。
我做的一个静态变量类(启动weblogic时,就执行这个类),里面给很多变量赋值,他的生命周期是weblogic启动----weblogic关闭
softroad 2011-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lmaohuanl 的回复:]

静态变量在内存中只有一个,JAVA虚拟机加载类的时候为其分配内存,位于方法区,被类的所有实例共享,其生命周期取决于类的生命周期。。。当类被卸载。。。静态变量也被销毁
[/Quote]

学习了。
LMAOhuaNL 2011-08-09
  • 打赏
  • 举报
回复
静态变量在内存中只有一个,JAVA虚拟机加载类的时候为其分配内存,位于方法区,被类的所有实例共享,其生命周期取决于类的生命周期。。。当类被卸载。。。静态变量也被销毁
dokia123 2011-08-09
  • 打赏
  • 举报
回复
类的生命周期我也看了,说是当没有任何引用指向class对象的时候就会卸载类。但是如果我只是通过类名调用静态变量,这时候并没有实例化class对象,那这个类什么时候被卸载。[Quote=引用 8 楼 wyc_cs 的回复:]

先理解了类的生命周期之后,静态变量的生命周期自然就知道了。静态变量的生命周与类的生命周期是一样的。个人理解。类加载的时候会在方法区中生成静态变量,直到这个类被卸载掉,在整个过程中只有一个变量。
[/Quote]
wyc_cs 2011-08-09
  • 打赏
  • 举报
回复
先理解了类的生命周期之后,静态变量的生命周期自然就知道了。静态变量的生命周与类的生命周期是一样的。个人理解。类加载的时候会在方法区中生成静态变量,直到这个类被卸载掉,在整个过程中只有一个变量。

81,092

社区成员

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

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