首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从java堆收集旧对象

从java堆收集旧对象
EN

Stack Overflow用户
提问于 2016-03-09 04:07:56
回答 1查看 62关注 0票数 1

我有Order_Item类实例,这些是指向GC根的路径(不包括幻影/弱/软引用):

我有几个问题:

1)我不确定Order_Item是否会被垃圾回收。

我尝试运行System.gc(),对象仍然在堆中。

根据所提供的图像,是否允许收集?

2)什么是“原生堆栈”?据我所知,它被计算为GC根。http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Fconcepts%2Fgcroots.html为什么某些对象(即订单0x782032cf8)保留在“本地堆栈”中?

3)如果我有从GC根到对象A的引用,该对象将不会被垃圾收集?对吗?

如果是这样,我的Order_Item对象就不能被垃圾回收了吗?

4)如果3是正确的,如何找到对象0x7821da5e0和0x782032cf8的保留原因,以及如何解除引用/移除它们?

EN

回答 1

Stack Overflow用户

发布于 2016-03-09 04:14:32

您不能强制垃圾回收器删除给定的对象。您知道,只要可以通过程序中给定点的引用访问该对象,该对象就会一直保持活动状态。但如果对象变得“可收集”,它可能很快就会被收集,但如果没有内存压力,它可能会浪费很长时间。

通常,如果有足够的内存,就没有理由真正删除对象。我唯一知道的例外就是密码。在这里,您使用了一个char数组,并在使用它之后用胡言乱语重写它。

对于本机堆栈:您的链接指示本机堆栈保存外部资源,例如文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35877057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档