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

需要澄清的最新情况:

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

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

例子:static int i = 1; //the value 1 is stored in the PermGen sectionstatic 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的不同版本之间也可能有所不同。上面的内容是基于HotsforJava 5和6的(它们基本上是相同的),因为在回答时,我想说大多数人都使用这些JVM。由于Java 8时内存模型发生了重大变化,上述语句可能不适用于Java 8 HotSpot-而且我没有检查Java 7 HotSpot的更改,所以我猜以上对于那个版本仍然是正确的,但我在这里不确定。

java 静态变量 存储_Java中存储的静态方法和静态变量在哪里?相关推荐

  1. java 的方法是静态的类_Java中单例模式和静态方法类的区别

    最近翻看了一些资料,发现JAVA的单例模式并不简单:PHP并没有线程安全的问题,一个请求在结束后生命周期就结束了,PHP设计单例模式仅仅是为了如果在同一个页面多次处理,可以不用重复创建对象而已:JAV ...

  2. java重新初始化吗_Java中为何已经重新赋值的变量在输出后会初始化?

    /*这是代码先定义变量用switch选择结构重新赋值后输出的变量却初始化了...*/importjava.util.Scanner;publicclass练习3{publicstaticvoidmai ...

  3. 不同类型的变量在内存中存储的详细情况

    原文链接:http://blog.csdn.net/qingkong8832/article/details/6687793 一.int型变量在内存中存储详细情况 //By Richard #incl ...

  4. java 数据保存内存_java中的各种数据类型在内存中存储的方式 一

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  5. java静态变量特点_Java中static的特点

    前两天面试时被问到静态的特点,当时回答地不是很好,现在来总结一下 在了解某样东西的时候我们通常会从它是什么,为什么,和怎么样在三方面来衡量,对于java中的static,我们也这样讨论下,要明确以下几 ...

  6. java中参数存储_Java中函数参数传递和数据存储

    值传递是将要传递的值作为一副本传递的.. 引用传递,传递的是引用对象的内存地址.. 例如: int i=4; int j=i;   //相当于把4复制了一个副本赋给了j 输出结果是i=4 ,j=4 C ...

  7. java string 对象地址_Java中String对象的存储位置(学习笔记)

    packagetest.string.equal;public classMain {/*** 创建了三个对象,"helloworld对象创建在常量池中",每次new String ...

  8. java子类代码块_java中父类子类静态代码块、构造代码块执行顺序

    父类静态(代码块,变量赋值二者按顺序执行) 子类静态 父类构造代码块 父类构造方法 子类构造代码块 子类构造方法 普通方法在实列调用的时候执行,肯定位于上面之后了 //父类A public class ...

  9. java的静态如何理解_java中的静态是什么?如何理解?

    在Java语言中,static表示"静态"的意思,使用场景可以用来修饰成员变量和成员方法,当然也可以是静态代码块.static的主要作用在于创建独立于具体对象的域变量或者方法. 格 ...

最新文章

  1. JavaWeb总结(九)
  2. AndroidStudio中使用XML和Java代码混合控制UI界面实现QQ相册照片列表页面
  3. POJ 3974 Palindrome (算竞进阶习题)
  4. OJ4008-糖果【各种dp之3】
  5. Java进阶之对象克隆(复制)
  6. zsh: command not found: service
  7. 【发现问题】Java中PrintWriter和BufferedWriter的区别
  8. Win10显示多个虚拟桌面
  9. 越狱团队否认收钱并中止与太极合作
  10. 常见的主流数据库(DBMS)
  11. MySQL数据操作与查询笔记 • 【第6章 聚合函数和分组查询】
  12. zTree插件setting配置详解
  13. 可以免费自学编程的12个网站
  14. 4D-Net for Learned Multi-Modal Alignment 论文笔记
  15. PhysX官方手册翻译
  16. k-means用于图像的颜色聚类
  17. 家庭财务管理系统(C++面向对象课程设计附课设报告)
  18. Linux系统下安装alsa-lib-1.1.8
  19. 数字加减与摄氏华氏度转化 王明哲
  20. Linux 中查看网卡是否启用

热门文章

  1. 搭建瑞芯微rk3128本地android代码服务器
  2. Apex---Apache开源流式处理框架
  3. word没保存怎么恢复?如何找回未保存的word文档
  4. 职场十大杀手追袭白领健康。
  5. matebook14装鸿蒙系统,华为Matebook发布会,同步宣传pc端应用商城,无疑是一次亮剑...
  6. html5 亲子模板,亲子阅读手抄报精美模板
  7. 通俗易懂的双亲委派机制
  8. 笔记本bios设置教程(图)
  9. 《战双帕弥什》战斗系统解析:适合手机的动作游戏
  10. 门店系统有哪些功能,应该如何选择门店管理系统?