垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回

Posted 雷超朝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回相关的知识,希望对你有一定的参考价值。

  对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。

  可以。

  程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。强制执行垃圾回收:System.gc()。Runtime.getRuntime().gc()

  静态类:static的是属于类的,而不是属于对象的,相当于是全局的,不可能被回收

  静态变量本身不会被回收,但是它所引用的对象应该是可以回收的。

  gc只回收heap里的对象,对象都是一样的,只要没有对它的引用,就可以被回收(但是不一定被回收). 对象的回收和是否static没有什么关系!

如:static Vector pane = new Vector();  pane = null;  如果没有其它引用的话,原来pane指向的对象实例就会被回收。

  Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。

以上是关于垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回的主要内容,如果未能解决你的问题,请参考以下文章

面试官:你对JVM垃圾收集器了解吗?13连问你是否抗的住!

面试官:你对JVM垃圾收集器了解吗?13连问你是否抗的住!

java中垃圾回收机制的原理

关于垃圾回收的一些基本原理及技术解析

深入理解V8的垃圾回收原理

Python的垃圾回收机制原理