Java中垃圾回收机制

知了姐2019-07-05972

     “猪能吃的是湿垃圾,猪不吃的是干垃圾,猪吃了会死的是有害垃圾,卖了能买猪的是干垃圾 ......”最近,上海人民都快被垃圾分类弄疯了。那作为程序员的你,知道在Java中是怎么垃圾回收的吗?

 

什么是垃圾回收?

 

      说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是释放垃圾占用的空间。

 

       自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。

 

       所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。

 

第一步:找出垃圾


      垃圾回收器此时会找出哪些内存在使用中,还有哪些不是。

 


      上图中,蓝色表示已引用对象,橙色表示未引用对象。垃圾回收器要检查完所有的对象,才能知道哪些有被引用,哪些没。如果系统里所有的对象都要检查,那这一步可能会相当耗时间。

 

第二步:清除垃圾

 

      这一步会删掉标记出的未引用对象。内存分配器会保留指向可用内存的引用,以供分配新对象。

 

第三步:压缩

 

      为了提升性能,删除了未引用对象后,还可以将剩下的已引用对象放在一起(压缩),这样就能更简单快捷地分配新对象了。

版权声明:本文来源于网络,由知了堂搜集整理,仅供大家学习IT编程时参考


  • 培训费用

  • 上课方式

  • 开班时间

  • 就业情况