JVM-垃圾、垃圾回收算法(1)

什么是垃圾?

没有引用指向的任何对象都叫做垃圾。

如何寻找垃圾?
  1. 引用计数(reference count)


    image.png

    有几个引用指向某个对象,引用计数就是几。
    如果引用计数为0,那么这个对象会被回收。

但是引用计数不是万能的,循环引用问题会导致没写垃圾不会被回收。


image.png

在对象被循环引用时,引用计数均不为0,但并没有任何引用指向这个整体。

  1. 根可达算法(Root Searching)


    image.png

    哪些是根对象?

  • 线程栈变量
    java程序从main方法开始执行,会起一个线程,这个线程会有线程栈,从main栈针开始的对象。
  • 静态变量
    class在加载到内存后,会对静态变量进行初始化,静态变量能够访问的到的对象。
  • 常量池
    某一个class会用到其他class的对象。
  • JNI指针
    java调用的C/C++本地方法所用到的对象。

第二部分传送门:JVM-垃圾、垃圾回收算法(2)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是垃圾? 对于程序汇总分配的内存,当使用完成后,这部分内存就会成为垃圾,需要对其进行释放,否则,这部分内存将无...
    我犟不过你阅读 193评论 0 3
  • JVM内存管理 根据JVM规范,JVM把内存划分成了如下几个区域: 方法区(Method Area) 堆区(Hea...
    Android_冯星阅读 735评论 0 5
  • 堆是Java虚拟机进行垃圾回收的主要场所,其次要场所是方法区。jvm堆内存分为如下几个部分: 和GC相关的JVM优...
    瑾瑾宝宝阅读 425评论 0 1
  • 本文主要介绍JVM和GC解析本文较长,分为上下篇(可收藏,勿吃尘)如有需要,可以参考如有帮助,不忘 点赞 ❥ 一、...
    菜农曰阅读 303评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,563评论 16 22