当前位置: 首页 > 面试题库 >

为什么幻影引用入队后不清除?

归星驰
2023-03-14
问题内容

我们可以看到“幻影可达”和“不可可达”一样:§

如果对象既不是强的,软的也不是弱的,并且已被终结,则它是幻影可到达的,并且某些幻像引用引用了该对象。

最后,当对象无法通过上述任何一种方式到达时,它是不可到达的,因此有资格回收。

现在,来自:http : //download.oracle.com/javase/6/docs/api/java/lang/ref/PhantomReference.html

与软引用和弱引用不同,幻象引用在排队时不会被垃圾收集器自动清除。通过幻像引用可访问的对象将保持不变,直到清除所有此类引用或它们自身无法访问为止。

基本原理是什么?哪有一个?

这是Java API怪癖的另一种典型情况吗?


问题答案:

入队时,将清除软引用,因为软引用的主要用途是允许缓存大型对象,而清除软引用则允许对大型缓存的对象进行垃圾回收。

弱引用在入队时会被清除,因为弱引用的主要用途是允许一个对象引用一个对象而不阻止其被垃圾回收,因此,一旦对象被排队,清除引用就可以对该对象进行垃圾回收。

幻像引用入队后不会清除,因为幻像引用的一种使用情况是允许在垃圾回收对象之前执行清理。通过不清除引用,该对象将保持幻像可访问的状态(并且不符合垃圾收集的条件),直到用户清除对该对象的PhantomReference或PhantomReference本身就是垃圾收集为止。

这在这里解释,

如果对象既不是强的,软的也不是弱的,并且已被终结,并且有一些幻像引用对其进行引用,则它是幻像可到达的。

最后,当对象无法通过上述任何一种方式到达时,它是不可到达的,因此有资格回收。



 类似资料:
  • 问题内容: 我想清除并更改给定URL上的输入值。我使用的js不会执行任何操作,也不会导致任何错误。为什么会发生这种情况,我该如何解决? 问题答案: 一个可能且可能的答案是,在尝试清除的元素之前,您还有另一个具有相同名称的元素。 请检查html并检查是否找到多个元素,然后采用第一个。 另外,您可以使用css选择器,例如:

  • 元素呈现无形地保持相同的大小和其他维度,包括基线位置,如果它们正常呈现的内容将具有。 它用于通过隐形复制子表达式来对齐表达式的各个部分。 语法 (Syntax) 以下是使用此标记的简单语法 - <mphantom> expression </mphantom> 参数 (Parameters) 以下是此标记的所有参数的说明 - expression - 推断多个孩子的分娩。 属性 (Attribu

  • 问题内容: 我的问题是为什么python为什么同时使用引用计数和gc的标记和清除?为什么不只是标记和扫描? 我最初的猜测是,使用引用计数可以轻松删除非循环引用的对象,这可能会在某种程度上加快标记扫掠并立即获得内存。不知道我的猜测是否正确? 有什么想法吗? 非常感谢。 问题答案: Python(语言)没有说明它使用哪种形式的垃圾收集。您描述的主要实现(通常称为CPython)。其他版本,例如Jyth

  • 这里出现的问题是,当我在示例socekt之间连接时。使用此套接字的io客户端。io服务器(按节点)。js(只运行两个终端并打开客户端和服务器之间的套接字连接)我没有问题 但是,当我试图注入这个套接字时。io客户端到我的Ember。js应用程序,准确地说,它会将我的客户端从给定地址重定向到类似于 http://localhost:8080/socket.io/?EIO=3 我还在浏览器中粘贴了检查控

  • 问题内容: 我有一张表,其中有一个名为的整数列。我在该列上有一个索引。 但是似乎Postgres不想使用我的索引: 知道为什么会这样吗? 问题答案: 因为: 您选择的行太多了,以至于读取整个表都比较便宜。

  • 问题内容: 因此,我有一个名为Save.php的文件。 它需要两件事:一个文件和新内容。 您可以通过发送类似的请求来使用它。 ..但当然是对网址进行编码。:)为了简化和可读性,我不做任何编码。 该文件有效,但不是内容。 ..我发现.. .. 当稍后通过XHR获取JSON文件时尝试使用时,当然会抛出错误。 要保存内容,我只用.. 我该怎么做才能消除反斜线? 问题答案: 关闭在php.ini关闭。