Object类的finalize的用法:

马克-to-win:java当中有个垃圾回收机制,具体说,就是当一些对象被创建使用之后若不再使用的话{比如(i)对象被置成null.(ii)局部对象(无需置成null)当程序运行到右大括号.(iii)匿名对象刚用完},就会变成垃圾占用空间,JAVA的自动垃圾回收(gc)线程会在适当的时候自动运行,回收内存。马克-to-win: 再具体一点,对象被创建之后,垃圾回收(gc)系统就开始跟踪这个对象的使用情况。垃圾回收系统采用有向图的方式:开始时对象一定是可达的,刚把它置为null时,它也就变成了不可达的了,这时就是所谓的垃圾。垃圾回收系统就会回收这些内存空间。马克-to-win:回收之前,先调用该对象的finalize方法。让其做一些最后的收尾工作。见下例,当p1 = null;时,Java的垃圾回收线程会在适当时间点回收p1对象占据的内存空间。马克-to-win:回 收之前,首先调用p1的finalize()。但是sun公司不保证finalize方法会被及时地自动执行。所以我们加了一句,System.gc ();建议系统回收一下垃圾。gc代表garbage collection(垃圾回收),finalize方法就被执行了。

例2.1.4---

class PersonMark_to_win {
    String name;
    public PersonMark_to_win(String n) {
        name = n;
    }
    public void finalize() {
        System.out.println(name + " 在进行finalize");
    }
}
public class Test {
    public static void main(String[] args) throws InterruptedException {
        PersonMark_to_win p1 = new PersonMark_to_win("张三");
        PersonMark_to_win p2 = new PersonMark_to_win("李四");
        p1 = null;
        // p2 = null;
        System.gc();
        // Thread.sleep(3000);//如果发现gc不执行,就运行一下sleep
    }
}

例2.1.4_a
class PersonMark_to_win {
    String name;
    public PersonMark_to_win(String n) {
        name = n;
    }
    public void finalize() {
        System.out.println(name + " 在进行finalize");
    }
    void test(){
        PersonMark_to_win pp1 = new PersonMark_to_win("张三jubu");
    }
}
public class Test {
    public static void main(String[] args) throws InterruptedException {
        PersonMark_to_win p1 = new PersonMark_to_win("张三");
        PersonMark_to_win p2 = new PersonMark_to_win("李四");
        p2.test();
        System.gc();
        p1 = null;
        // p2 = null;
        System.gc();
         Thread.sleep(3000);//如果发现gc不执行,就运行一下sleep
    }
}
更多内容请见原文,文章转载自:https://blog.csdn.net/qq_44639795/article/details/101519682

java中Object类的finalize的用法的更多相关文章

  1. Java中Object类hashCode的底层实现

    Java中Object类hashCode的底层实现 openjdk\jdk\src\share\native\java\lang\Object.c 42 static JNINativeMethod ...

  2. Java中Class类详解、用法及泛化

    Java中Class类及用法 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI.这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确方 ...

  3. java中Object类的getClass方法有什么用以及怎么使用?

    Object类的getClass的用法: Object类中有一个getClass方法,m  a  r  k- t  o- w i n:它会返回一个你的对象所对应的一个Class的对象,这个返回来的对象 ...

  4. 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解(转载)

    java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...

  5. Java中Object类的公有方法

    HashCode();wait();notify();equals();getClass();toString();clone();finalize(); 这里只是简单介绍一下其中的几个函数: Has ...

  6. Java中Object类常用的12个方法,你用过几个?

    前言 Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的“老祖宗”.Java 中所有的类都有一个共同的祖先 Object 类,子类都会继承所有 Object ...

  7. java中Object类是怎么回事,干嘛使的?举例说明!

    Object类的作用:m a r k - t o-        w i n: 在java中,因为所有的类都有共性,所以java的缔造者们把java设计成这样:所有的类都是Object类的直接或间接子 ...

  8. Java中Object类的方法笔记

    今天看了下Object类的源码,以下是我看源码的一些笔记,欢迎有小伙伴来补充~ 首先列举下几个主要方法(面试被问到过的): equals:这个主要是用于比较对象的,Object中比较的是比较原始的,直 ...

  9. Java中Object类

    Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另一个类,那么这个类默认继承Object类. Object类中的方法,适合所有子类. Object中的几个重要方法: 1 ...

随机推荐

  1. JZ-019-顺时针打印矩阵

    顺时针打印矩阵 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4 矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...

  2. vivo鲁班RocketMQ平台的消息灰度方案

    一.方案背景 RocketMQ(以下简称MQ)作为消息中间件在事务管理,异步解耦,削峰填谷,数据同步等应用场景中有着广泛使用.当业务系统进行灰度发布时,Dubbo与HTTP的调用可以基于业界通用的灰度 ...

  3. swoole 聊天室

    1:宝塔终端安装php 2:宝塔终端检测是否安装好 php-v 3:宝塔面板安装swoole扩展,终端检测 php -m  查看扩展 扩展已经安装完毕

  4. laravel7 h-ui点改

    html: <td> @if($item->fang_status == 0) <span onclick="changeFangStatus(this,{{$ite ...

  5. 用两行代码实现重试功能,spring-retry真是简单而优雅

    背景 最近做的一个需求,需要调用第三方接口.正常情况下,接口的响应是符合要求的,只有在网络抖动等极少数的情况下,会存在超时情况.因为是小概率事件,所以一次超时之后,进行一次重试操作应该就可以了.重试很 ...

  6. Java &、&&、|、||、^、<<、>>、~、>>>等运算符

    &(按位与) 运算规则:两个为真才为真 (1&1=1 , 1&0=0 , 0&1=0 , 0&0=0) 例:3&5=1 3的二进制位是0000 0011 ...

  7. git 回滚方式

    git push 命用于从将本地的分支版本上传到远程并合并. 命令格式如下: git push <远程主机名> <本地分支名>:<远程分支名> 如果本地分支名与远程 ...

  8. Linux下查看端口占用进程号,程序名的方法

    Linux下查看端口占用进程号,程序名的方法,方便我们查找什么进程导致系统变慢等需要.linux下查看端口占用情况: 1. 查看哪个进程占用了819端口: case9-sghfofo:/usr/loc ...

  9. JDBC快速入门(附Java通过jar包连接MySQL数据库)

    •通过jar包连接mysql数据库 •下载jar包 Java 连接 MySQL 需要驱动包,官网下载地址为MySQL驱动包官网下载,选择适合的jar包版本进行安装 (记得安装的地址,下面导入包时会用到 ...

  10. Docker——questions

    服务器的防火墙有什么用?(P14) Tomcat中的webapps.dist这一文件输出目录是用来做什么的?(P15) 容器之间实现数据共享的基础是要在主机有挂载的卷?