【发布时间】:2010-07-26 09:55:53
【问题描述】:
【问题讨论】:
-
Java 和JavaScript 不相关。
标签: java
【问题讨论】:
标签: java
垃圾收集器为您管理内存。它在您的代码运行时在后台线程上运行。您通常不会直接与它交互。您只需在 JVM 中运行即可“使用”它。
【讨论】:
whitepaper 包含您需要的有关 Java HotSpot VM 中的垃圾收集的所有信息。如果您遇到任何不熟悉的概念,只需在 Wikipedia 中搜索或继续此主题。
【讨论】:
您不能“使用”垃圾收集。它是语言及其对象模型的基础部分。
为了澄清这一点,让我们只考虑类类型(如String 和Integer),而忽略基本类型(如int 和char)。 (数组类型也被认为是类类型。)假设T就是这样一个类类型。
在Java 中,与其他语言不同,您永远不能拥有类类型的变量。每当您声明变量T x; 时,x 实际上就是一种“跟踪引用”。该引用可以是null,也可以引用T 类型的现有对象。但对象本身必须始终显式、动态地创建:
T x = new T();
那个对象,也就是x 所指的那个对象,存在于你的计算机的某个神奇的、被管理的部分中,你不能直接操作它。不过,您可以创建更多参考:
T y = x; // another reference to the same object
现在一个自然的问题出现了:当没有更多的引用时,对象会发生什么?答案是垃圾收集:当没有对对象的进一步引用时,它就有资格在以后的非确定性时间点被清除。这是唯一可以恢复与对象关联的资源的方法。
如果没有垃圾回收,您基本上不可能在 Java 中以任何定义明确、稳健的方式拥有任何对象。
【讨论】: