java 静态变量和静态常量

如题静态变量和静态常量的存放位置,和回收时机是怎么样的定义在类中的静态变量和常量类卸载了会不会被回收?... 如题静态变量和静态常量的存放位置,和回收时机是怎么样的
定义在类中的静态变量和常量类卸载了会不会被回收?
展开
 我来答
蜜糖萱萱666
2018-05-22 · TA获得超过3074个赞
知道小有建树答主
回答量:1375
采纳率:81%
帮助的人:62.7万
展开全部
  • 静态变量是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由static加以定义后才能成为静态外部变量,或称静态全局变量。

  • 对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。由此看来,一个变量可由static进行再说明,并改变其原有的存储方式。

  • 而在以Pascal为代表的许多程序语言中,所有局部变量都由系统自动分配存储空间,而所有全局变量的存储空间则以静态分配的方式获取,因此由于实际上“局部变量”和“全局变量”这两个术语已足以涵盖所有的情况,在这些程序语言中通常不使用“静态变量”这一术语,而直接以“全局变量”代之。

  • 在这些程序语言中,静态变量就是全局变量,而即使在有明确区分全局和静态变量的程序语言中,在编译后的代码里二者也以相同的方式获取存储空间。而今术语“静态变量”的概念则主要基于C族语言的“static”的定义。

  • 静态变量也可以用于存储常数。具体来说,静态变量可用const,constant或final等关键字标识,这时其值就会在编译时设定,并且无法在运行时改变。编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区

Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
CUST_API
2018-05-22 · TA获得超过105个赞
知道小有建树答主
回答量:216
采纳率:66%
帮助的人:31.2万
展开全部

这个涉及到JAVA的内存机制,我也是不是很精通,就简单说一下在下的想法:

Java文件在编译期被Java编译器编译诚.class文件,在服务器启动时,服务器需要用到的.class文件会被Java类型加载器加载进Java虚拟机的内存,在Java虚拟机内存的方法区存储虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。在方法区中存在一个叫运行时常量池的区域,它主要用于存放编译器生成的各种字面量和符号引用。

这里值得注意的是方法区只是存储内存中的虚拟机加载的类信息。

静态常量在编译期被初始化和分配内存,也就是说静态常量在编译就已经实例化了。而静态变量在类加载过程中的准备阶段分配内存,在初始化阶段赋值

回收时机:类被卸载时,静态变量被销毁,并释放内存空间。static变量的生命周期取决于类的生命周期

这是我个人的理解和分析,欢迎各位指出其中的错误。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式