如果无法从任何活动线程或任何静态引用访问对象,则该对象将有资格进行垃圾收集或GC。

换句话说,如果一个对象的所有引用都是空的,那么它就有资格进行垃圾回收。循环依赖关系不算为引用,因此如果对象A引用对象B,对象B引用对象A,并且它们没有任何其他活动引用,那么对象A和B都有资格进行垃圾收集。

用于垃圾收集的堆代-

中创建Java对象Heap和Heap为了在Java中进行垃圾收集,将其分为三个部分或几代,它们称为年轻一代(新一代)、终身(老)一代和珀姆地区堆里的。

新一代进一步分为三个部分,即伊甸园空间、幸存者1空间和幸存者2空间。当第一次在堆中创建对象时,它将在伊甸园空间内的新一代中创建,并在随后的次要垃圾收集之后,如果一个对象幸存下来,则将其移动到幸存者1,然后在主要垃圾收集将该对象移动到老代或长辈.

烫发空间JavaHeap是JVM存储有关类和方法、字符串池和类级详细信息的元数据的地方。

有关更多信息,请参阅此处:垃圾收集

您不能强迫JVM运行垃圾收集,尽管您可以使用System.gc()或Runtime.gc()方法。

在java.lang.system中public static void gc() {

Runtime.getRuntime().gc();  }

在java.lang.Runtime中public native void gc();  // note native  method

标记和扫描算法-

这是垃圾收集使用的最流行的算法之一。任何垃圾收集算法都必须执行两个基本操作。第一,它应该能够检测所有不可访问的对象,其次,它必须回收垃圾对象使用的堆空间,并使空间再次可供程序使用。

上述操作分两个阶段由Mark算法和扫描算法执行:标记相

扫描相位

在这里了解更多细节-标记和扫描算法

java中垃圾收集_Java中的垃圾收集器是什么?相关推荐

  1. java 设计模式 示例_Java中的中介器设计模式-示例教程

    java 设计模式 示例 中介者模式是行为设计模式之一 ,因此它处理对象的行为. 中介器设计模式用于在系统中不同对象之间提供集中式通信介质. 根据GoF,中介者模式意图是: 通过封装不同对象集相互交互 ...

  2. java finalize 作用_Java中finalize()用法

    垃圾回收器要回收对象的时候,首先要调用这个类的finalize方法(你可以 写程序验证这个结论),一般的纯Java编写的Class不需要重新覆盖这个方法,因为Object已经实现了一个默认的,除非我们 ...

  3. java静态方法 问题_Java中堆、栈,静态方法和非静态方法的速度问题

    一.堆和栈的速度性能分析 堆和栈是JVM内存模型中的2个重要组成部分,自己很早以前也总结过堆和栈的区别,基本都是从存储内容,存储空间大小,存储速度这几个方面来理解的,但是关于堆和栈的存储速度,只知道堆 ...

  4. java show过时_Java中show() 方法被那个方法代替了? java编程 显示类中信

    你说的show是swing里的吧,在老版本中Component这个超类确实有show这个方法,而且这个方法也相当有用,使一个窗口可见,并放到最前面.在jdk5.0中阻止了这个方法,普遍用setVisi ...

  5. java 序列化实例_Java中的序列化与反序列化实例

    创建的字节流与平台无关.因此,在一个平台上序列化的对象可以在另一个平台上反序列化. 为了使Java对象可序列化,我们实现java.io.Serializable可序列化接口. ObjectOutput ...

  6. JAVA计算器计时器_Java中计时器的使用

    Java中计时器的使用 import java.util.Timer; import java.util.TimerTask; public class TimerExample { /** * Ja ...

  7. java异常面试_java中异常的面试

    https://blog.csdn.net/qq_36523638/article/details/79363652 1) Java中的检查型异常和非检查型异常有什么区别? 这又是一个非常流行的Jav ...

  8. java post流_java中的post是什么意思

    在许多应用程序中使用GET都没有问题.但是,GET要求通过一个环境变量将自己的数据传递给CGI程序.但假如GET字串过长,有些web服务器可能用光自己的环境空间(若字串长度超过200字符,就应开始关心 ...

  9. java 字符串总结_Java中字符串(String)总结

    先说说JDK API: JDK中包含大量的API类库,所谓API(Application Programming Interface,应用程序编程接口,这些功能以类的形式封装). JDK API包含的 ...

  10. java 选项卡面板_Java中的高级组件面板——JTabbedPane(选项卡面板)

    在Java的GUI设计中,若是要想实如今一个窗体中多个界面而且能在这些界面内能够随意切换,那选项卡面板绝对是最佳的选择,下面将具体介绍JTabbedPane的使用方法java 使用方法介绍 1. 首先 ...

最新文章

  1. Catch Overflow!
  2. Pixhawk(PX4)之驱动详解篇(0)_前期准备(招贤令)
  3. 学JS的心路历程-Promise(一)
  4. python调用c 接口_python调用C接口
  5. php 置信区间 计算,科学网—置信区间和标准误差 - 邸月宝的博文
  6. Blazor University (9)组件 — 代码生成 HTML 属性
  7. 【Git】Git-常用命令备忘录(一)
  8. 【名额有限】云开发AI拓展能力等你来体验!
  9. 手把手教你用java完成文件、图片下载
  10. mysql门派年龄最大的人_目前活着年龄最大的人
  11. Django 模板标签 换行导致异常的处理 linebreaksbr
  12. 【HPU】[1732]序列的区间操作
  13. PowerBI动态M查询参数
  14. nginx master-worker工作模式简析
  15. 详细安装系统镜像Contos图解和常用命令
  16. winform图片标尺控件
  17. 使用Jsch执行Shell脚本
  18. Python+Vue计算机毕业设计停车场管理系统8f46a(源码+程序+LW+部署)
  19. 综述:阿尔茨海默病的神经振荡和脑刺激
  20. 主流视频会议租用产品对比

热门文章

  1. oracle查表文件大小,Oracle表空间使用大小查询
  2. Java黑皮书课后题第8章:*8.8(所有最近的点对)修改程序清单8-3,找出所有所有具有最小距离的点对。下面是一个运行示例
  3. (转)Linux内核参数之arp_ignore和arp_announce
  4. [C#]打包项目[转]
  5. Codeforces 766E Mahmoud and a xor trip(树形DP)
  6. MySql连接——内连接、外连接(左连接、右连接、全连接)
  7. Chrome开发者工具和Firebug的一些简单比较
  8. 双子座|双子座性格分析
  9. ZendStudio-v6.0注册机
  10. 在没有Sql Server 2000中加入 记录编号