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

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

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

(0)
上一篇 2022年5月4日 下午6:20
下一篇 2022年5月4日 下午6:20


相关推荐

  • XPlanner使用手册

    XPlanner使用手册

    2021年5月7日
    130
  • c自定义标题栏

    c自定义标题栏最近在编写 C S 结构应用程序时 感觉窗体的标题栏样式太死板了 标题文字不能更改大小 颜色 字体等 按钮不能隐藏等问题 在网上也查找了许多相关的资料 没有找到合适的解决方案 发现许多人也在寻求这个问题 最后我决定自己研究动手画一个标题栏出来 经过今天一天的研究与编写 终于完成全部功能 现公布一下我的设计思路 一 去掉 Form 类自带的标题栏

    2026年3月26日
    2
  • Android适配器作用

    Android适配器作用AndroidAdapter适配器Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。Android中有很多的适配器,首先看看这些适配器的继承结构Data、Adapter、View三者的关系  Data、Adapter、View三者的关系一个li

    2022年4月28日
    45
  • request 和require区别_合同翻译时如何区分使用request和require

    request 和require区别_合同翻译时如何区分使用request和require合同中,request和require都是“要求”的意思,不过request更偏重于“请求”,翻译英到中时遇到这两个词问题不大,翻译出它们的意思就可以,但是中译英时就要注意了,这是我今天要强调的重要区别,前者动作发出者通常为人,后者通常为物,下面通过例句说明:1requestAttherequestoftheBuyer,theSUPPLIERundertakestodeposi…

    2025年8月23日
    5
  • 51单片机LED点阵实验(74HC595)

    51单片机LED点阵实验(74HC595)实验目的 用 8 8 的 LED 点阵显示一颗爱心 实验仪器 普中开发板 非广告 实验背景 出于一些原因 最近在看 Arduino 但仍觉得 51 好玩 遂 一边看 Arduino 一边整理 51 8 8 的 LED 点阵电路如图一所示 有两种方式 单片机上集成的电路方式为第二种 其中 行由 P0 口控制 列由 D7 D0 HC595 芯片控制 见下方 控制 图一首先考虑 如何先点亮一个灯 eg 让

    2026年3月17日
    1
  • 色彩缤纷的Python(改变字体颜色及样式)

    色彩缤纷的Python(改变字体颜色及样式)色彩缤纷的python(改变字体颜色及样式)在项目过程中,我们常常会因为输出信息的颜色与样式过于单调以至于让人在视觉上感到很杂乱,所以看下文:python在Linux终端中,使用转义序列来进行如

    2022年7月5日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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