一个class静态变量的内存在什么时候释放?!

badboy_119 2005-01-12 11:23:02
一个class静态变量的内存在什么时候释放?!
...全文
1087 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
danceflash 2005-01-14
  • 打赏
  • 举报
回复
对啊,我的意思就是基本型也是存储在内存中的 ^_^

只不过基本型存在栈中,对象存在堆中 ^_^
taolei 2005-01-13
  • 打赏
  • 举报
回复
class里面的静态内容是在这个class被释放的时候同时释放。
那么,class是什么时候释放的呢?
在sun 的JDK中所有的class都有它的ClassLoader,当这个ClassLoader被释放时,所有被它装载的class也同时被释放。
如果是系统的ClassLoader,那么就只有等到程序退出时才能释放了。
如果是自定义的ClassLoader,就可以用程序控制这个ClassLoader和它装载的class的释放。

例如:通常Application Server(Weblogic等)就用单独的ClassLoader装载Application. 当需要动态更新Application时,先从这个ClassLoader放下释放Application的所有资源,再重新装载.

jsp的动态更新也是使用了这个技术。
稽姬 2005-01-13
  • 打赏
  • 举报
回复
应该在应用结束时同时释放。
具体就该问问虚拟机了。
wts 2005-01-13
  • 打赏
  • 举报
回复
danceflash(Wine) :
int不是基本型别吗?呵呵
Romeo1982 2005-01-13
  • 打赏
  • 举报
回复
说说几种类型变量的适用场合也许意义更大点~·
joyaga 2005-01-13
  • 打赏
  • 举报
回复
顶了
eureka0891 2005-01-13
  • 打赏
  • 举报
回复
taolei(实在无聊)说得对
bonniewater 2005-01-13
  • 打赏
  • 举报
回复
楼上的说的好
danceflash 2005-01-12
  • 打赏
  • 举报
回复
我印象中int型也是存在内存中的
只不过基本型存在栈中,对象存在堆中 ^_^
linubert 2005-01-12
  • 打赏
  • 举报
回复
在这个class unload的时候,有时这个class在整个程序周期都不会释放!
或者在静态变量设为NULL的时候,你可以在程序中 variablename = null
vgvg 2005-01-12
  • 打赏
  • 举报
回复
程序执行完了.
whyxx 2005-01-12
  • 打赏
  • 举报
回复
整个Application终止的时候,比如WebLogic停止,SWING画面关闭等.
wts 2005-01-12
  • 打赏
  • 举报
回复
不好意思,好像有点跑题了:(
wts 2005-01-12
  • 打赏
  • 举报
回复
好像根据类型的不同,也应该有所区别吧?比方说int型静态变量和Integer型静态变量。
int型存在于寄存器中,而Integer型的存在于内存中。
我不太确定,只是提个看法。
另外,我觉得,只要你的这个拥有静态变量的类的任何实例存在,则这个静态变量就不会消失。而如果你在任何地方都没有使用这个类的实例,也没有使用这个静态变量或者其引用(比方说Integer型),则GC会回收,那么静态变量也就消失了。
danceflash 2005-01-12
  • 打赏
  • 举报
回复
静态变量的空间只要这个Class还加载在内存中,就不会被释放
至于静态变量指向的空间,只要没有引用指向时,GC的时候就会被释放
Carlson Wang 2005-01-12
  • 打赏
  • 举报
回复
在JVM垃圾收集的时候会释放.

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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