对象的使用与销毁

对象的使用与销毁

对象的使用

  1. 创建对象:通过使用new关键字和类的构造器来创建对象。这会分配内存并调用构造器来初始化对象的状态。

    MyClass myObject = new MyClass();
    
  2. 访问对象:通过对象的引用变量来访问对象的属性和方法。

    myObject.someMethod();
    int value = myObject.someProperty;
    
  3. 修改对象状态:通过调用对象的方法或直接访问其属性(如果它们是可访问的)来改变对象的状态。

    myObject.setState("new state");
    
  4. 对象交互:对象之间可以通过方法调用相互交互,传递消息和数据。

    myObject.doSomethingWith(otherObject);java
    
  5. 使用完毕:当对象不再需要时,应该释放与之关联的资源,尤其是那些非内存资源(如文件句柄、网络连接等)。

对象的销毁

  1. 引用释放:当一个对象的引用变量被设置为null或超出作用域时,该引用不再指向原先的对象。这使得垃圾收集器可以识别并回收该对象所占用的内存。

    myObject = null;
    
  2. 垃圾收集:Java和其他一些语言使用自动垃圾收集机制来回收不再被任何引用指向的对象所占用的内存。垃圾收集器会在适当的时候运行,但具体的时机是不确定的。

  3. 终结器(Finalizer):在Java中,可以为对象定义一个finalize()方法,该方法在垃圾收集器确定对象可被回收之前被调用。然而,依赖finalize()方法来释放资源是不可靠的,因为它的执行时机不确定,且从Java 9开始已被标记为过时。

  4. 显式资源管理:对于需要显式关闭或清理的资源,应该在不再使用时立即释放它们。Java的try-with-resources语句可以自动管理实现了AutoCloseableCloseable接口的资源。

    try (Resource resource = new Resource()) {
        // 使用资源
    } // 自动调用resource.close()释放资源
    
  5. 软引用、弱引用:在Java中,还可以使用软引用(SoftReference)和弱引用(WeakReference)来指向对象。这些引用允许垃圾收集器在内存不足时回收它们指向的对象,即使还有其他引用指向这些对象。

  6. 内存泄漏:如果不正确管理对象引用,可能会导致内存泄漏,即不再需要的对象无法被垃圾收集器回收。这通常是由于意外的引用保持活动状态造成的。

*GC垃圾回收器 (System.GC())

GC(Garbage Collection,垃圾回收)是自动内存管理的一种形式,它在许多现代编程语言中用来回收不再使用的对象所占用的内存。垃圾回收器的主要任务是识别和释放那些不再被程序引用的对象,从而防止内存泄漏和提高内存使用效率。

可以回收new的对象,不能回收系统资源

posted @ 2024-08-07 18:39  糊涂图-4060  阅读(19)  评论(0)    收藏  举报