Object 中的方法:

finalize()//清除资源

hashcode()//获取hashcode   Java hashcode 理解:

1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;

2、如果两个对象相同,就是适用于equals(Java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;

3、如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;

4、两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”

toString();

notify()//唤醒对该对象监视的线程,该方法和wait()正好相反互补,wait和notify方法在线程同步上使用,防止数据污染,数据同步等。

wait()//暂时挂起调用该对象的线程

getClass()//获取对象的类名

clone()//复制和该对象一样的对象

equal//判断两个对象是不是相等

jvm 回收的理解:

ava 有个解释器的含义:就是负责对象的创建,内存分配,记录和回收。
Java对象的创建就是在堆上面分配一块地址区域,同时在栈上面创建一个栈结构。在创建栈结构的同时,会记录对象的对应的地址区域,栈是有自己的生命周期的,创建栈是生命的开始,栈弹出就是生命周期的结束。当然栈自己的大小也决定自己的生命周期,主应用的对应一个最大的栈结构。是面对对象编程,那么先是创建对象,也就是创建一个总的栈结构,然后运行对象的方法--这就代表这主线程。是面对结构编程,那么也是需要创建main方法,那么也是要建栈。
从系统而言,cp开始执行是依据栈结构的,其是指向栈结构中的指令一步步执行的。

当这个对象调用完成之后,那么栈结构就完全弹出,那么就会被记录到。栈是一直被跟踪和记录的。
GC创建单向表记录对象的状态,弹出栈的时候就会回收堆地址,所谓的回收堆地址,就是在记录堆的内存分配的记录表中清除这块记录。

Java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。

        (1).对象不一定会被回收。

       (2).垃圾回收不是析构函数。

       (3).垃圾回收只与内存有关。

       (4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的。

调用finalize,是清除对象中的子栈结构(栈结构结束就会被记录到)和数据,不代表这一定接下来就执行GC,执行GC是耗时的。只有jvm内存很低的时候会触发GC.
但是既然一个对象栈结构弹出了,那么里面子栈结构也一定都弹出了,那么为什么还要在回收之前回收finalize。栈虽然弹出来了,不代表内存中的栈区域地址被回收,此时还是占用栈地址的。只有执行了finalize,栈才会被腾空。这是我基于jvm的原理理解而推断的,不过后来查规范的书籍,验证了我的推断。可见深入理解原理,才能让自己的有知更容易获取,更容易扩大,更容易做出准确的推断和判断。
总结:finalize 可以回收栈内存,而GC不能回收栈内存。

Java object方法与GC回收相关推荐

  1. java object 方法_Java中Object类常用的12个方法,你用过几个?

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

  2. Java基础知识强化83:System类之gc()方法(垃圾回收)以及和finalize()区别

    1. System概述: System类包含一些有用的类字段和方法.它不能被实例化. 2. gc()方法:垃圾回收器 1 public static void gc()       调用gc方法暗示着 ...

  3. 【Java 虚拟机原理】垃圾回收算法 ( 可达性分析算法 | GC Root 示例 | GC 回收前的两次标记 | finalize 方法示例 )

    文章目录 一.可达性分析算法 二.GC Root 示例 三.GC 回收前的两次标记 四.finalize 方法示例 一.可达性分析算法 在 堆内存 中 , 存在一个 根对象 GC Root , GC ...

  4. 【Java 虚拟机原理】垃圾回收算法 ( 设置 JVM 命令参数输出 GC 日志 | GC 日志输出示例 | GC 日志分析 )

    文章目录 一.设置 JVM 命令参数输出 GC 日志 二.GC 日志示例 三.GC 日志分析 一.设置 JVM 命令参数输出 GC 日志 在 IntelliJ IDEA 的启动参数中设置 -XX:+P ...

  5. java gc回收算法_Java GC回收算法-判定一个对象是否可以回收

    开源推荐 推荐一款一站式性能监控工具(开源项目) Pepper-Metrics是跟一位同事一起开发的开源组件,主要功能是通过比较轻量的方式与常用开源组件(jedis/mybatis/motan/dub ...

  6. java gc回收堆还是栈_浅析JAVA的垃圾回收机制(GC)

    1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制. 注意:垃圾回 ...

  7. java gc回收算法_Java基础之GC垃圾回收的历史

    [TOC] 垃圾回收思路: - 发现无用信息对象 - 回收被无用对象占用的内存空间,使该空间可被程序再次使用. > 关键词联想:(**类型**)堆和非堆,(**人类成长**)伊甸园-幸存者乐园- ...

  8. java gc 例子_Java 中, 为什么一个对象的实例方法在执行完成之前其对象可以被 GC 回收?...

    收到好多邀请-泻药泻药.其中有好些感觉是想来吃瓜的. 所以请让我先跑个题,为吃瓜群众献上几个传送门: private static void newSingleThreadPool() { Execu ...

  9. Java常量什么时候被回收,JVM GC调优(2)-GC算法判定对象可以被回收(部分摘自深入理解Java虚拟机) - Java 技术驿站-Java 技术驿站...

    这次我们介绍JVM中的GC算法 引用计数法 可达性分析法 首先我们提出四个问题 哪里的内存需要回收? 什么时候回收? 如何回收? Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的&quo ...

最新文章

  1. 英语计算机作文初中.,初中英语作文:电脑游戏
  2. Nature 子刊:加州大学Banfield组揭示CPR细菌和DPANN古菌多样性及与低温TEM下宿主互作关系...
  3. 如何改变cmd的编码格式?
  4. C++判断是否为素数、求一个数的因数、质因数分解
  5. [译]git revert
  6. 2015-2016 XVI Open Cup, Grand Prix of Bashkortostan, SKB Kontur Cup Stage 2
  7. 帆软报表插件开发之fine-decision中的MessageEventProvider扩展
  8. Servlet技术详解
  9. 100天搞定机器学习|Day35 深度学习之神经网络的结构
  10. opencl icd---OpenCL Installable Client Driver (ICD) Loader
  11. 12v电量显示制作方法_12V电池电量指示电路
  12. Java 动态代理机制讲解(Proxy.newProxyInstance)
  13. kafka集群搭建(三台服务器)
  14. 基于RFID和ZigBee室内定位技术原理浅析--室内定位--蓝牙定位--新导智能
  15. 实验13:20220625 1+X 中级实操考试(id:3411)
  16. 汉语拼音声母、韵母表
  17. 卧槽!我的世界也有开源版本了!!!
  18. ADFでパラメーターのやり取り
  19. Buildozer生成的APP闪退+PermissionError故障排除记录
  20. C/C++ 算法分析与设计:递归(年龄问题)

热门文章

  1. intellij行数输出限制
  2. 【机器学习】逻辑回归特征的离散化与交叉
  3. 原生Aajax 和jQuery Ajax 写法个人总结(简单)
  4. 知道自己想要什么,保持自己的节奏。
  5. Centos7下python2.x 和python3.x共存
  6. iOS中UIWebview中网页宽度自适应的问题
  7. 经验DELL电脑突然无法进去系统,一直在戴尔的图标上无限重启
  8. u-boot.lds 文件分析
  9. HelloCnblogs
  10. initialization of 'XXX' is skipped by 'case' label