java文件通过编译器(javac命令)生成class文件(字节码文件),其通过java命令启动虚拟机将字节码文件转换成平台能够理解的方式运行。

类存在于源文件里面,方法存在于类中,语句存在与方法中。

真正被执行的是类。

override(重写父类方法),覆盖,由子类重新定义继承下来的方法,以改变或延申此方法的行为。

类是对象的蓝图。

受测试类名称+TestDrive

main方法的两种用途:1.测试真正的类;2.启动Java程序

//codegym内容
garbage collector(GC,垃圾回收机制)
**the garbage collector works in parallel with your program. But it wasn't always so. Garbage collection used to be performed on the same thread as your program. On some schedule (once every few minutes), the garbage collector would check for the presence of unwanted objects in the program. The problem was that the program would hang (not execute) during this check and garbage collection. This mechanism(机制) was later changed, and now the garbage collector runs in the background, not impeding the work of the program itself.**
GC不会统计对象的引用,就像例子中说的三个对象互相引用,程序中其他的与他们无关,若GC统计对象的引用,那就不会收集这三个对象,也就不会释放内存。虽然他们有关联,但是程序中用不到他们,那就是无用的垃圾。
![](https://cdn.codegym.cc/images/article/a8838616-318a-44b1-8bcf-4eb69019799f/800.webp#pic_center)
**Accordingly, in Java, the decision was made to collect garbage based not on reference counting, but on a separation of objects into two types: reachable and unreachable.(可达/不可达) An object is reachable if it is referenced by another reachable object. Thus, we get a "chain of reachability". It starts when the program starts and continues for the duration of the program. The arrow in the figure indicates our program's executable code. The code (for example, the main() method) creates references to objects. These objects can refer to other objects, those objects to still others, and so on. This forms a reference chain.(引用链) If you can trace along to chain from an object to the "root reference" (the one created directly in executable code), then it is considered reachable. Such objects are marked black in the picture. But an object is unreachable if the object drops out of this chain, i.e. none of the variables in the code currently being executed references it, and it cannot be reached through the "reference chain". In our program, two such objects are marked red. Note that these "red" objects have references to each other.**
![](https://cdn.codegym.cc/images/article/d6916ebb-571c-4786-83ed-0f15f60730ba/800.webp#pic_center)
![图片反映了垃圾回收机制](https://cdn.codegym.cc/images/article/a24e9f66-458e-4b27-a120-d25f2af013ad/800.webp#pic_center)
Eden中是使用new关键字创建的对象区域,当该区域内存耗尽时,会根据其中垃圾和引用对象的占比采取不同的算法,标记垃圾回收或是标记引用对象转移到生存空间,生存空间又根据对象经历的垃圾回收轮数定了代数,经历一轮就是1代,堆中还有一个长寿命对象的存放地,是经过很多论垃圾回收机制后进入,从生存空间进入长寿对象的存放地。在旧一代满后就会执行完全垃圾回收机制,这个过程涉及多个内存区域。一般来说,它涉及Java机器创建的所有对象。当然,这需要更多的时间和资源。
上面文章节选自[](https://codegym.cc/groups/posts/16-more-about-the-garbage-collector-)讲的是Java的垃圾回收机制。 finalize()方法不会每次都会调用,其是Object类中定义的方法

java垃圾处理机制的更多相关文章

  1. 第28章 java反射机制

    java反射机制 1.类加载机制 1.1.jvm和类 运行Java程序:java 带有main方法的类名 之后java会启动jvm,并加载字节码(字节码就是一个类在内存空间的状态) 当调用java命令 ...

  2. Java反射机制

    Java反射机制 一:什么事反射机制 简单地说,就是程序运行时能够通过反射的到类的所有信息,只需要获得类名,方法名,属性名. 二:为什么要用反射:     静态编译:在编译时确定类型,绑定对象,即通过 ...

  3. java基础知识(十一)java反射机制(上)

    java.lang.Class类详解 java Class类详解 一.class类 Class类是java语言定义的特定类的实现,在java中每个类都有一个相应的Class对象,以便java程序运行时 ...

  4. java基础知识(十一)java反射机制(下)

    1.什么是反射机制? java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象都能够调用他的属性和方法,这种动态获取属性和方法的功能称为java的反射机制. ...

  5. JAVA 异常处理机制

    主要讲述几点: 一.异常的简介 二.异常处理流程 三.运行时异常和非运行时异常 四.throws和throw关键字 一.异常简介 异常处理是在程序运行之中出现的情况,例如除数为零.异常类(Except ...

  6. java基础知识(四)java内存机制

    Java内存管理:深入Java内存区域 上面的文章对于java的内存管理机制讲的非常细致,在这里我们只是为了便于后面内容的理解,对java内存机制做一个简单的梳理. 程序计数器:当前线程所执行的字节码 ...

  7. Java 事件机制

    java事件机制包括三个部分:事件.事件监听器.事件源. 1.事件.一般继承自java.util.EventObject类,封装了事件源对象及跟事件相关的信息,用于listener的相应的方法之中,作 ...

  8. Java反射机制专题

    ·Java Reflection Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方 ...

  9. java反射机制深入详解

    java反射机制深入详解  转自:http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html 一.概念 反射就是把Java的各种成分映射成 ...

随机推荐

  1. 扩展NSDate类实现快捷使用 —— 昉

    获取当前日期和时间: +(NSDate *)getCurrentDate{ NSDate *now = [NSDate date]; return now; } 将日期转换为字符串: +(NSStri ...

  2. Python编程知识

    继承->重写 class A(object): def __init__(self): print("super(B,self).__init__():运行A:init") ...

  3. 基于XC7Z100+AD9361的双收双发无线电射频板卡

    一.板卡概述 板卡基于Xilinx公司的SoC架构(ARM+FPGA)的ZYNQ7100芯片和ADI公司高集成度的捷变射频收发器AD9361,实现频谱范围70MHz~6GHz,模拟带宽200KHz~5 ...

  4. Diary -「CSP 2019 J/S」 游记

    \(\text{Day 0}\) 试机, 总体感觉不错, 至少不像初一时候的紧张, 毕竟是中青年选手了 ( ? )         当晚睡得挺好, 虽然是冲着一等奖去的, 但还是没有给自己过多的思想包 ...

  5. Solution -「CF 793G」Oleg and Chess

    \(\mathcal{Description}\)   Link.   给一个 \(n\times n\) 的棋盘,其中 \(q\) 个互不重叠的子矩阵被禁止放棋.问最多能放多少个互不能攻击的车.   ...

  6. CentOS7 下 ldap 部署

    环境准备 # 关闭防火墙以及selinux,生产环境中,以实际需求为准 [root@localhost ~]# hostnamectl --static set-hostname ldap-serve ...

  7. 深入MySQL(一):MySQL的组织架构

    今天开始将自己所学过的MySQL的知识都尝试融会贯通,并且用写博客的方式记录分享下来. 今天讲的主题是MySQL的组织架构,对于学习一个中间件或者开源项目而言,我觉得最重要的便是先知晓其组织架构,以一 ...

  8. SRv6规模部署,离不开测试技术保驾护航!

    什么是SRv6? SRv6技术就是采用现有的IPv6转发技术,通过扩展IPv6报文的头域,实现类似标签转发的处理.SRv6将一些IPv6地址定义成实例化的SID(Segment ID),每个SID有着 ...

  9. 智能脚本工具(Smart scripts)测试应用

    如果你是一位网络测试人员,您的工作中是否有出现过以下困扰呢? · 重复机械式的测试有时让你觉得工作是如此的枯燥乏味!· 只增不减的测试用例让你下班越来越晚!· 请求老板招人,人却永远不够用! 但值得庆 ...

  10. 技术小白的也能独立完成数据分析,这款BI系统你值得拥有

    是否有很多小白跟我一样,不会编程代码,又觉得excel操作太繁琐了,一直苦苦不知道要怎么做数据分析.前段时间我使用了一款bi系统,简直太方便了!拖拉拽就能制作分析图表.点击就能应用智能分析功能,如果这 ...