1:对象可能不被垃圾回收

2:垃圾回收并不等于“析构”

3:垃圾回收只与内存有关,为了回收程序不再使用的内存

java虚拟机采用了“自适应”的垃圾回收机制,即“自适应的、分代的、停止—复制、标记—清扫”式垃圾回收器。

java虚拟机会见识,如果所有对象都很稳定,垃圾回收器的效率降低的话,就切换到“标记——清扫”方式,如果堆控件出现很多碎片,就会切换回“停止——复制”方式。

下面介绍两种方式的运行方式:

停止——复制(stop-and-copy)先暂停程序的运行,(所以它不属于后台回收模式),然后将所有存货的对象从当前堆复制到另一个堆,没有被复制的全是垃圾,当对象被复制到新堆是,他们是紧密排列的。这种方式效率很低,首先的有两个对,然后得在这两个分离的堆之间来回倒腾。

标记——清扫(mark_and-sweep)从堆栈和静态存储去出发,遍历所有的引用,进而找到所有存货的对象,每当他找到一个存活对象,就会给对象设一个标记,这个过程中不会回收任何对象。只有全部标记完成的时候,清理动作才会开始,在清理过程中,没有标记的对象将被释放,不会有任何复制动作,所以剩下的堆控件是不连续的。

Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。

需要注意的是:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身。

System.gc()

Runtime.getRuntime().gc()

上面的方法调用时用于显式通知JVM可以进行一次垃圾回收,但真正垃圾回收机制具体在什么时间点开始发生动作这同样是不可预料的,这和抢占式的线程在发生作用时的原理一样。

java垃圾回收菜鸟_java垃圾回收机制相关推荐

  1. 6种java垃圾回收算法_Java垃圾回收机制

    Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来.在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给 ...

  2. java垃圾回收菜鸟_java程序员不懂JVM内存回收,两年后也是个菜鸟

    java程序员不懂JVM内存回收,两年后也是个菜鸟 在学java程序员的时候,如果你还不懂JVM内存回收,那么你就只能是个很一般的程序员菜鸟了,那么什么是JVM内存回收呢?今天我们就来学习,都还不深入 ...

  3. java 垃圾回收 新生代_Java垃圾回收

    一.概述 Java垃圾回收器实现内存的自动分配和回收,这两个操作都发生在Java堆上(还包括方法区,即永久代).垃圾回收操作不是实时的发生(对象死亡不会立即释放),当内存消耗完或者是达到某一指标(th ...

  4. 垃圾回收算法_Java 垃圾回收算法与几种垃圾回收器

    一.如何确定某个对象是"垃圾"? 目前主流垃圾回收器都采用的是可达性分析算法来判断对象是否已经存活,不使用引用计数算法判断对象时候存活的原因在于该算法很难解决相互引用的问题.如何确 ...

  5. java 回收策略_Java堆回收策略

    一.起源 1960年Lisp语言: 第一门真正使用内存动态分配和垃圾回收的语言. 二.概要 线程相关:程序计数器.虚拟机栈.本地方法栈,不需要考虑垃圾回收 Java堆.方法区:需要考虑垃圾回收 三.垃 ...

  6. 6种java垃圾回收算法_Java垃圾回收算法

    主要根据以下3篇博客做的整理 http://blog.csdn.net/zsuguangh/article/details/6429592 http://www.cnblogs.com/ywl925/ ...

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

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

  8. java 判断object类型_Java 类继承机制

    封装.继承.多态是面向对象的三大特征,"继承"最主要的目的是为了实现代码的可复用性.通过父类与子类的继承关系,子类继承了父类的成员函数和成员变量,提高了代码的重复利用率.同时,子类 ...

  9. java 反射 设置属性_Java通过反射机制动态设置对象属性值的方法

    /** * MethodName: getReflection * Description:解析respXML 在通过反射设置对象属性值 * User: liqijing * Date:2015-7- ...

最新文章

  1. C++ 类的内存分布
  2. python可分组字典
  3. android getwindow 在fragment不能使用,Android Fragment 布局使用 fitsSystemWindows = true 无效解决方案...
  4. BugkuCTF-WEB题give_up
  5. Linux安装prometheus+grafana监控
  6. Java方法区和运行时常量池溢出问题分析(转)
  7. 关于控件开发的几点意见
  8. mysql 下载教程_MySQL下载安装详情图文教程
  9. 【高数】高数第八章节——向量代数与空间解析几何空间直角坐标系
  10. 前端使用(久派)高拍仪进行拍照上传
  11. collapse mode 严重_明早10点大讲堂 | 一个简单的方法解决生成对抗网络mode collapse问题...
  12. Java并发编程:volatile关键字解析 by 海子
  13. JAVA计算两条直线的交点(判断两条线段相交)
  14. 【生活中的逻辑谬误】以泪掩过和以笑饰非
  15. mac kindle app打不开书/白屏解决方案
  16. java 操作execl添加边框
  17. Unity尝试从零创建一个敌人
  18. python用bbp公式求圆周率_神奇的BBP公式,可独立计算圆周率任何一位数字,曾震惊数学界!...
  19. 2021宁波市第四届网络安全大赛(练习平台)RSA部分
  20. 新手坐高铁怎么找车厢_高铁怎么找车厢,问工作人员/根据候车站台地标颜色找...

热门文章

  1. 面试必会系列 - 5.3 LVS负载均衡
  2. Libra教程之:Libra协议的关键概念
  3. Java对象克隆方法(浅克隆、深克隆)
  4. python多维数据post给php_使用Python中的POST将数据发送到PHP
  5. nfcwriter下载 ios_iphone12支持在5G蜂窝数据下下载IOS更新
  6. 安卓学习 之 Activity(二)
  7. 计算机网络:子网划分、子网掩码、CIDR 、路由聚合相关计算详解
  8. 洛谷——P1068 分数线划定
  9. 【附全部代码+图片】使用HTML5+CSS3绘制HTML5的logo——Web前端系列学习笔记
  10. oracle 绑定变量模糊查询,求助-ACTIVE DG 异常shutdown