java static 变量存在哪_Java中的静态方法和静态变量存储在哪里?

java static 变量存在哪_Java中的静态方法和静态变量存储在哪里?小编典典静态方法(实际上是所有方法)以及静态变量都存储在PermGen堆的部分中,因为它们是反射数据(与类相关的数据,而不与实例相关的数据)的一部分。更新说明:请注意,只有变量及其技术值(原始或引用)存储在PermGen空间中。如果你的静态变量是对对象的引用,则对象本身存储在堆的常规部分(青年/旧世代或幸存者空间)中。这些对象(除非它们是类之类的内部对象)不会存储在PermGen空间中。例:sta…

大家好,又见面了,我是你们的朋友全栈君。

小编典典

静态方法(实际上是所有方法)以及静态变量都存储在PermGen堆的部分中,因为它们是反射数据(与类相关的数据,而不与实例相关的数据)的一部分。

更新说明:

请注意,只有变量及其技术值(原始或引用)存储在PermGen空间中。

如果你的静态变量是对对象的引用,则对象本身存储在堆的常规部分(青年/旧世代或幸存者空间)中。这些对象(除非它们是类之类的内部对象)不会存储在PermGen空间中。

例:

static int i = 1; //the value 1 is stored in the PermGen section

static Object o = new SomeObject(); //the reference(pointer/memory address) is stored in the PermGen section, the object itself is not.

关于垃圾回收的一句话:

不要不依赖finalize(),因为它不能保证运行。JVM完全可以决定何时运行垃圾收集器以及收集什么,即使对象符合垃圾收集的条件。

当然,你可以将静态变量设置为null,从而删除对堆上对象的引用,但这并不意味着垃圾收集器将收集它(即使没有更多引用了)。

另外,finalize()它仅运行一次,因此你必须确保它不会引发异常,否则会阻止对象被收集。如果你通过某些异常暂停完成,finalize()则不会再次在同一对象上调用。

最后要注意的是:如何存储代码,运行时数据等取决于所使用的JVM,即HotSpot可能与JRockit不同,并且在同一JVM版本之间甚至可能有所不同。上面的内容基于Java 5和6的HotSpot(基本上是相同的),因为在回答之时,我会说大多数人都使用了这些JVM。由于Java 8的内存模型发生了重大变化,因此上述陈述可能不适用于Java 8 HotSpot,并且我没有检查Java 7 HotSpot的变化,所以我想以上对于该版本仍然适用,但我不确定在这里。

2020-03-06

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136616.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Mac virtualbox 共享文件夹

    Mac virtualbox 共享文件夹1.启动virtualbox,选中虚拟机,点击设置,点击共享文件夹;2.点击右侧按钮添加共享文件夹;3.选择共享文件夹路径(mac路径),自动挂载,固定分配两个勾选。4.VBoxGuestAdditions_5.0.0.iso下载地址http://download.virtualbox.org/virtualbox/5.0.0/5.启动VirtualBox,启动win7虚拟机,…

    2022年10月27日
  • mysql主从复制周期_Mysql主从复制[通俗易懂]

    mysql主从复制周期_Mysql主从复制[通俗易懂]Mysql主从复制背景:Mysql可以实现主从复制,在学习了Mysql主从复制后,将一些如何主从复制过程记录下来,供以后复习使用。准备:在做Mysql的主从复制前需要做一些准备工作:1、同步时间做主从的服务器的时间需要同步,不然会出问题。命令:ntpdateip(ntpdate命令需要先安装ntpdate)2、版本一致做主从的Mysql服务需要版本一致,或者从服务器的版本高于主服务器。主从复制…

  • 国内最好用的dns地址_dns的服务器地址设置

    国内最好用的dns地址_dns的服务器地址设置对于DNS我想我们大部分人都会使用运营商自动推荐使用他们自己DNS服务器,使用它们的DNS服务器容易出现被劫持。所以今天我在这里推荐几个国内安全稳定的DNS服务器供大家使用……1、中国互联网络信息中心公共DNS服务器(CNNIC’sDNS)首选地址:1.2.4.8备用地址:210.2.4.82、百度公共DNS(BAIDU’SDNS)地址:180.76.76.763、阿里公共DNS服务器(Ali…

  • c++ 静态函数_c语言if结构格式

    c++ 静态函数_c语言if结构格式1、对象与对象之间的成员变量是相互独立的.要想共用数据,则需要使用静态成员或静态方法2、只要在类中声明静态成员变量,即使不定义对象,也可以为静态成员变量分配空间,进而可以使用静态成员变量.(因为静态成员变量在对象创建之前就已经被分配了内存空间)3、静态成员变量虽然在类中,但它并不是随对象的建立而分配空间的,也不是随对象的撤销而释放(一般的成员在对象建立时会分配空间,在对象撤销时会释放…

  • 7种方法求解八数码问题

    【八数码问题】//https://vijos.org/p/1360在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。【分析】题目读完第一感

  • java 生成注释文档

    java 生成注释文档

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号