Java基础笔试题解析:finalize方法与垃圾回收

版权申诉
0 下载量 122 浏览量 更新于2024-07-04 收藏 44KB DOCX 举报
"Java基础101道基础笔试题包含了关于Java编程语言的基本概念、内存管理、垃圾回收机制以及对象生命周期等内容。这份文档适合初学者巩固基础知识,也适合作为面试准备材料。" 1. finalize() 方法是Java中与垃圾回收相关的一个方法,它在对象被垃圾回收之前调用,允许程序员进行一些清理工作。正确形式为 `protected void finalize() throws Throwable`,用于在对象被销毁前执行特定操作。如果 finalize() 方法抛出运行时异常,这个异常会被忽略,对象仍然会被垃圾回收器回收。 2. 在Java中,释放对象占用的内存空间不是程序员直接控制的。程序员无法通过调用 `free()` 方法或 `System.gc()` 来强制回收内存。实际上,`System.gc()` 只是一个建议,告诉JVM可以执行垃圾回收,但不保证一定会执行。赋值给对象的引用为 `null` 可以帮助对象更快地被识别为可回收的,但并不立即释放内存。 3. 在给定的代码示例中,变量 `s2` 引用的对象会在第6行赋值后成为垃圾,因为 `s2` 被赋予了一个新的字符串对象,而旧的对象失去了所有引用,符合垃圾回收条件。然而,由于Java的字符串池特性,原始的字符串对象可能不会立即被回收,直到主线程结束或者垃圾回收器运行。 4. 在第二个代码示例中,到达关键点时,只有一个对象符合垃圾回收条件,即 `name` 变量指向的 "Frieda" 对象,因为 `newestName` 和 `name` 都被赋值或设为 `null`,不再指向它。所以答案是B。 5. 垃圾回收器是Java自动管理内存的一部分,它负责识别不再使用的对象并回收其占用的内存。但是,程序员不能指定何时进行垃圾回收,也不能保证程序不会出现内存溢出。因此,有关垃圾回收器的正确描述是: - C. 程序员可以制定垃圾回收器回收(这是不正确的,因为垃圾回收是自动进行的) - A. 程序员可以在指定时间调用垃圾回收器释放内存(这是不完全正确的,因为只能建议,不能保证) - B. 垃圾回收器可以保证Java程序不会产生内存溢出(这是不正确的,因为过度创建对象仍可能导致内存溢出) 这些题目考察了Java中的对象生命周期、内存管理和垃圾回收的基本原理,是理解Java内存管理的关键点。学习这些内容有助于编写更高效、更健壮的Java代码。