即在
class A {
public String s;
}
和
A a1 = new A();
a1.s = "bla";
A a2 = new A();
a2.s = a1.s;
a1 = null;
将a1
被垃圾回收还是a1.s
允许其被回收的参考(我宁愿做一个深拷贝,a2.s = new String(a1.s)
)?
在此先多谢!
如果一个object
拥有另一个引用,则object
当您设置容器对象的reference时null
,child或contains会object
自动变为有资格进行垃圾回收的对象。
有关更多信息,请参见此链接。
问题内容: 给定仅在程序设置中使用的假设实用程序类: 不再使用myObject时会对其进行垃圾回收,还是在程序的生命周期内始终存在? 问题答案: 加载类时,不能选择静态变量进行垃圾回收。当各自的类加载器(负责加载此类)本身被收集为垃圾时,可以收集它们。 查看JLS第12.7节卸载类和接口 仅当垃圾回收器可以回收定义的类加载器时,才可以卸载类或接口。引导加载器加载的类和接口可以不卸载。
问题内容: 我有一个Java应用程序正在泄漏内存。我知道在垃圾回收期间哪些对象没有被释放,但是我无法确定引用它们的对象。 JVM内部保存的对象图是否具有某种可见性? 否则就有可能找出哪些对象引用了另一个对象? 问题答案: 在真正的基础上,您可以使用命令jhat和jmap从正在运行的Java进程中读取堆文件,然后对其进行处理- 它在本地端口上启动小型Web服务器。它并不是很容易阅读,但是您不必购买分
问题内容: 我一直在尝试和今天 按此顺序运行时 类似于以上。特别是,我没有感兴趣的“死”对象。 看到这一点,我开始寻找可以告诉我期望的文档。我最接近的讨论是该讨论,briand和alanb的评论暗示实际上,我可以期望使用live选项时会出现该GC。但答案已有5年之久了,在论坛上发帖似乎对规范不拘一格。 在哪里可以找到当前记录的行为? 问题答案: 为了确定活动性,Java 必须 运行完整的GC,因此
问题内容: 我是Java的新手。我现在正在学习WeakReference的概念。我遇到一个可能看起来很愚蠢的问题,但我只是想找出原因。问题是:根据Java文档,“弱引用对象,它们不会阻止对其引用进行最终化,最终确定和回收”。 所以我做了这个小测试: 但是,我注意到在GC运行之后,仍然可以返回我期望为null的对象,并且该方法未被调用。那么出了什么问题?感谢您的提前帮助!:) 问题答案: 测试的前提
问题内容: 我很好奇嵌套函数的node.js模式如何与v8的垃圾收集器一起工作。这是一个简单的例子 如果restofprogram是长时间运行的,那是否不意味着str将永远不会被垃圾回收?我的理解是,使用结点,您最终会获得很多嵌套函数。如果在外部声明了restofprogram,是否会收集垃圾,因此str不能在范围内?这是推荐做法吗? 编辑 我不想使问题复杂化。那只是粗心,所以我修改了它。 问题答
嗨,根据这里的留档https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/concurrent.html#mostly_concurrent热点JVM有两个并发收集器——CMS和G1。所以在垃圾回收机制中,这两个是并行使用的,还是只选择了一个?