垃圾回收器-Java面试题

Time:2016/07/06 20:34:10   Click:

 Java中垃圾回收的目的是什么, 它什么时候被使用 ?

垃圾回收用于识别和丢弃程序不再需要的对象, 以便回收和复用资源.

 System.gc() 和Runtime.gc()方法用途?

这些方法用于提醒JVM开始垃圾回收. 然而开始垃圾回收的时机是由JVM决定的.

 finalize()什么时候被调用 ? 它的目的是什么 ?

finallize方法是在释放该对象内存前由gc(垃圾回收器)调用. 通常建议在这个方法中释放该对象持有的资源.

如果一个对象的引用被设置为null, gc会立即释放该对象的内存么?

不会, 这个对象将会在下一次gc循环中被回收.

Java堆的结构是什么 ? 堆中的Perm Gen(全称是Permanent Generation)空间是什么 ?

JVM有一个运行时数据区,即堆(heap).所有的类实例和数组的内存都是从堆中分配的. 它在JVM启动时被创建. 对象所占用的堆内存会被一个称为垃圾回收器的自动内存管理系统收回.

堆内存中包含活的和死的对象. 活的对象可以被程序访问并且不会被垃圾回收. 死的对象是那些不会被程序访问的, 但还没有被垃圾回收器收回的对象. 这种对象会占用堆内存空间直到最终被垃圾回收器收回.

 Serial 垃圾回收器与 Throughput 垃圾回收器区别 ?

Throughput垃圾回收器使用并行版本的新生代回收器, 它用于中到大型数据集的应用. 另一方面, Serial回收器通常足以应对大多数的小应用(在现代处理器上不会超过约100MB的堆内存).


 什么时候对象会被回收 ?
当当前程序无法访问到某个对象时,该对象将被回收.

 垃圾回收发生在指定的JVM区域 ?
垃圾回收在 PermGen 里发生。如果 PermGen满了或是到了瓶颈,就会触发完全回收。如果仔细 观察垃圾回收过程,会发现PermGen最后也被回收了. 这就是为什么要设置合理的PermGen大小以避免完全垃圾回收. 可以看看这篇文章 Java 8: PermGen to Metaspace.



TAG
TOP

四川尚狐网络@2012 版权所有
蜀ICP备12016524号-2

立即咨询
成都网站建设,成都做网站,四川尚狐网络
40f13d50b73e104f832ed1b719ae6935