《2021年115个JAVA面试题和答案(4)》由会员分享,可在线阅读,更多相关《2021年115个JAVA面试题和答案(4)(3页珍藏版)》请在人人文库网上搜索。

1、115个Java面试题和答案(4) 115个Java面试题和答案 36.System. ___()和Runtime. ___()会做什么事情? 这两个方法用来提示JVM要进行垃圾回收。但是,立即开始还是延迟进行垃圾回收是取决于JVM的。 37.finalize()方法什么时候被调用?析构函数(finalization)的目的是什么? 在释放对象占用的内存之前,垃圾收集器会调用对象的finalize()方法。一般建议在该方法中释放对象持有的资源。 38.如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存? 不会,在下一个垃圾回收周期中,这个对象将是可被回收的。 39.Java堆。

2、的结构是什么样子的?什么是堆中的永久代(Perm Gen spa ___)? JVM的堆是运行时数据区,所有类的实例和数组都是在堆上分配内存。它在JVM启动的时候被创建。对象所占的堆内存是由自动内存管理系统也就是垃圾收集器回收。 堆内存是由存活和死亡的对象组成的。存活的对象是应用可以访问的,不会被垃圾回收。死亡的对象是应用不可访问尚且还没有被垃圾收集器回收掉的对象。一直到垃圾收集器把这些对象回收掉之前,他们会一直占据堆内存空间。 40.串行(serial)收集器和吞吐量(throughput)收集器的区别是什么? 吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等规模和大规模数据的应用程序。

3、。而串行收集器对大多数的小应用(在现代处理器上需要大概100M左右的内存)就足够了。 41.在Java中,对象什么时候可以被垃圾回收? 当对象对当前使用这个对象的应用程序变得不可触及的时候,这个对象就可以被回收了。 42.JVM的永久代中会发生垃圾回收么? 垃圾回收不会发生在永久代,如果永久代满了或者是超过了临界值,会触发完全垃圾回收(Full GC)。如果你仔细查看垃圾收集器的输出信息,就会发现永久代也是被回收的。这就是 ___正确的永久代大小对避免Full GC是非常重要的原因。请参考下Java8:从永久代到元数据区 (译者注:Java8中已经移除了永久代,新加了一个叫做元数据区的native内存区) 模板,内容仅供参考。