【考题题干】关于垃圾收集的哪些叙述是对的?
A.垃圾收集将检查并释放不再使用的内存。
B.垃圾收集允许程序开发者明确指定并立即释放该内存。
C.程序开发者必须自己创建一个线程进行内存释放的工作。
D.垃圾收集能够在期望的时间释放被 Java 对象使用的内存。
【试题分析】Java 语言将内存分配和释放的工组交给了自己,程序员不必做这些工作,它提供一个
系统级的线程跟踪每个内存的分配,在 JVM 的空闲处理中,垃圾收集线程将检查和释放不再使用的内
存(即可以被释放的内存)。垃圾收集的过程在 Java 程序的生存期中是自动的,不需要分配和释放内存,
也避免了内存泄漏。可以调用 System.gc()方法建议 JVM 执行垃圾收集以使得可被释放的内存能立即被
使用,当此方法返回的时候, JVM 已经做了最大的努力从被丢弃的对象上回收内存空间。程序员不能指
定收集哪些内存,一般而言也不用关心这个问题,除非是程序的内存消耗很大,特别是有很多临时对象
时可以“建议“进行垃圾收集以提高可用内存。需要指出的是调用 System.gc()方法不能保证 JVM 立即
进行垃圾收集,而只能是建议,因为垃圾收集线程的优先级很低(通常是最低的)。
JVM 垃圾收集器收集一个对象之前,一般要求程序调用适当的方法释放资源,但在没有明确释放资
源的情况下,Java 提供了缺省机制来终止化该对象心释放资源,这个方法就是 finalize( )。因此选项 A
是正确的。
垃圾收集器不可以被强制执行,但程序员可以通过调用 System. gc 方法来建议执行垃圾收集器。因
此选项 B 是错误的。
Java 的垃圾回收机制是为所有 Java 应用进程服务的,而不是为某个特定的进程服务的。因此,任何
一个进程都没有权利去命令垃圾回收机制做什么、怎么做或做多少。因此选项 C 是错误的。
Java 运行时系统只在需要的时候才使用垃圾收集。因此用户无法知道垃圾回收发生的精确时间。同
样没有办法预知在一组均符合垃圾收集器收集标准的对象中,哪一个会被首先收集。 因此选项 D 是错误
的。
【参考答案】A