相关疑难解决方法(0)

如何在Java和Android开发中使用WeakReference?

我是一名Java开发人员已有2年.

但我从来没有在我的代码中写过WeakReference.如何使用WeakReference使我的应用程序更高效,尤其是Android应用程序?

java android weak-references

159
推荐指数
4
解决办法
8万
查看次数

Java垃圾收集如何与循环引用一起使用?

根据我的理解,如果没有其他东西"指向"该对象,Java中的垃圾收集会清除一些对象.

我的问题是,如果我们有这样的事情会发生什么:

class Node {
    public object value;
    public Node next;
    public Node(object o, Node n) { value = 0; next = n;}
}

//...some code
{
    Node a = new Node("a", null), 
         b = new Node("b", a), 
         c = new Node("c", b);
    a.next = c;
} //end of scope
//...other code
Run Code Online (Sandbox Code Playgroud)

a,bc应该是垃圾收集,但它们都被其他对象引用.

Java垃圾收集如何处理这个问题?(或者它只是一个内存消耗?)

java garbage-collection

148
推荐指数
6
解决办法
5万
查看次数

弱参考 - 它们有多大用处?

所以我最近一直在考虑一些自动内存管理的想法 - 具体来说,我一直在寻找基于引用计数实现内存管理器.当然,每个人都知道循环引用会杀死天真的引用计数.解决方案:弱引用.就个人而言,我讨厌以这种方式使用弱引用(还有其他更直观的方法来解决这个问题,通过循环检测),但它让我思考:弱引用还有什么用处?

我认为它们必然存在某种原因,特别是在具有跟踪垃圾收集的语言中,它们不会受到循环参考陷阱的影响(C#和Java是我熟悉的,Java甚至有三种弱引用!).但是,当我试图为他们找到一些可靠的用例时,我几乎只有像"使用它们来实现缓存"这样的想法(我已经在SO上看过几次).我也不喜欢它,因为它们依赖于跟踪GC在不再强烈引用之后可能不会立即收集对象的事实,除非在低内存情况下.这些类型的情况对于引用计数GC是完全无效的,因为对象在不再被引用之后立即被销毁(除了可能在循环的情况下).

但这真让我感到疑惑:弱引用怎么可能有用呢?如果你不能指望它引用一个对象,并且它不需要像打破周期那样,那么为什么要使用它?

weak-references

35
推荐指数
3
解决办法
7358
查看次数

Java如何解决垃圾收集中的保留周期?

我知道保留周期(至少在Objective-C和Swift中)是两个对象声称彼此拥有(它们彼此引用).在Objective-C中,我们可以通过声明其中一个来解决问题weak.

根据我的阅读和理解,Java GC不受保留周期的影响,我们不必担心weak引用.它是如何解决的?

java garbage-collection

12
推荐指数
2
解决办法
2901
查看次数

参考周期的实际例子是什么?

垃圾收集器具有处理参考周期的功能.到目前为止,据我所知,这对于所有使用GC的语言都是必要的.

但我不明白,为什么不能创建语言避免参考周期,必要时使用一些弱引用.

在编程中出现的不可避免的参考周期的实际例子是什么?

garbage-collection reference

6
推荐指数
2
解决办法
78
查看次数