我是 java/garbage 收集语言的新手,但我仍然对拥有对象引用的含义有所了解(因为我被告知它不是指针?)所以我正在思考这个问题:
我有一个父/子对象结构,其中父级将有几个包含多个子级的列表...是否有任何效率低下或任何其他原因不让每个子级中的指针返回其父级?在我以前的语言(Delphi)中,它是一个简单的指针,所以根本不是问题。Java中的这种做法是否有任何考虑?
我是 java/garbage 收集语言的新手,但我仍然对拥有对象引用的含义有所了解(因为我被告知它不是指针?)所以我正在思考这个问题:
我有一个父/子对象结构,其中父级将有几个包含多个子级的列表...是否有任何效率低下或任何其他原因不让每个子级中的指针返回其父级?在我以前的语言(Delphi)中,它是一个简单的指针,所以根本不是问题。Java中的这种做法是否有任何考虑?
这里应该没有问题。从技术上讲是的,Java 引用不是指针,但对于大多数问题,您可以类似地考虑它们。对象引用是指向 Java 堆中位置的整数。因此,它存储的每个额外位置都是一个额外的整数。一般而言,相当小。
当涉及到对象管理时,您可以(通常!)相信 Java 会做正确的事情,并且不必过多担心垃圾收集或对象引用如何工作的复杂性。
据我所知,我会说你这样做会很好。Java 在清理垃圾方面做得很好,我通常在子类中有一个“父”字段。
正如之前的答案所述,一般来说,GC 非常适合清理事情。你主要关心的是一旦你离开活动,坚持下去的事情,坚持上下文。这将导致您的 Activity 留在内存中,因为您对它的引用不在它的父子树中。
更多关于这里
我认为如果你也阅读参考类型会很有帮助——强、弱、幻像和软,因为它会有所帮助。此外,请阅读 GC 的工作原理(针对不同代 - 年轻/幸存者空间和老一代)、要使用的垃圾收集器以及您可以指定的 GC 参数。