资讯专栏INFORMATION COLUMN

Java对象在JVM中的生命周期

Near_Li / 3391人阅读

摘要:把变量置为了,变量不再引用对象了,但是对象的仍然存放着对象的引用,那么对象就会结束生命周期把变量置为后,不再被任何引用变量所引用,自然对象的引用也不存在了,也就结束了周期。参考文档对象的生命周期

概念

在Java中,对象的生命周期包括以下几个阶段:

创建阶段(Created)

应用阶段(In Use)

不可见阶段(Invisible)

不可达阶段(Unreachable)

收集阶段(Collected)

终结阶段(Finalized)

对象空间重分配阶段(De-allocated)

Java对象在JVM中的生命周期

当你通过new语句创建一个java对象时,JVM就会为这个对象分配一块内存空间,只要这个对象被引用变量引用了,那么这个对象就会一直驻留在内存中,否则,它就会结束生命周期,JVM会在合适的时候回收它所占用的内存。

伪代码:

class Teacher:
    //属性
    String   name;
    Set students;
 
    //有参构造函数
    Teacher(String tname,  Set students );
 
    //set,get省略
 
class Student:
    //属性
    String name;
    Teacher teachrer;
 
    //有参构造函数
    Student(String sname,Teacher teacher);
    
    //set,get省略
main:
 Teacher t = new Teacher("张三",new hashSet());
 
 Student s = new Studnet("李四",null);
 
 s.getTeacher();
 t.setStudnet(s);


 s = null;
 t = null;

创建了一个Teacher对象和一个个Student对象,并且定义了2个引用变量t,s,分别引用了Teacher对象,Student对象

建立了Teacher对象和Student对象的双向关联关系,表示Student对象的teacher属性引用了Teacher对象,Teacher对象的students集合存放了Student对象的引用。

把s变量置为了null,s变量不再引用Student对象了,但是Teacher对象的students仍然存放着Student对象的引用,那么Student对象就会结束生命周期;把t变量置为null后,Teacher不再被任何引用变量所引用,自然Teacher对象的引用也不存在了,也就结束了周期。

虽然最后Teacher和Student之前还存在着双向引用,但是在程序中并没有任何引用变量来引用这两个对象,程序也就无法访问到这个两个变量,最终还是被JVM的垃圾回收器当作无用的对象所回收。

参考文档:Java对象的生命周期

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74535.html

相关文章

  • Java】类的生命周期简述

    摘要:一多个类的初始化在进入正文前首先根据上面的例子试图猜测为了类中的函数能够运行需要做哪些前置工作呢这些工作是以什么顺序展开的呢为了更好的描述多个类的情形可以先试图描述一个更简单的例子把行和行和行注释掉二类从到一句话把类从介质中复制到方法区通过 一)Example: 多个类的初始化 package me; class A { static int a = 1; static...

    qpwoeiru96 评论0 收藏0
  • Android内存泄漏总结

    摘要:内存泄漏总结内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。在中,内存泄漏的范围更大一些。 Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收。最近自己阅读了大量相关的文档资料,打...

    legendaryedu 评论0 收藏0
  • 一文了解JVM

    摘要:而使用虚拟机是实现这一特点的关键。每个字节码指令都由一个字节的操作码和附加的操作数组成。字节码可以通过以下两种方式转换成合适的语言解释器一条一条地读取,解释并执行字节码执行,所以它可以很快地解释字节码,但是执行起来会比较慢。 一、什么是JVM JVM是Java Virtual Machine(Java 虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实...

    whatsns 评论0 收藏0
  • Java虚拟机学习

    摘要:虚拟机学习是一个虚构出来的计算机有自己的处理器堆栈寄存器以及相应的指令系统等。类装载器子系统涉及虚拟机的其它组成部分和来自库的类。运行中的程序的每一个线程都是一个独立的虚拟机执行引擎的实例。 Java虚拟机学习 JVM JVM是一个虚构出来的计算机,有自己的处理器,堆栈,寄存器以及相应的指令系统等。JVM是JRE的一部分,通过在实际的计算机上仿真模拟各种计算机功能,这样就能使Java在...

    RobinTang 评论0 收藏0

发表评论

0条评论

Near_Li

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<