我有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的保留原因,以及如何解除引用/移除它们?
发布于 2016-03-09 04:14:32
您不能强制垃圾回收器删除给定的对象。您知道,只要可以通过程序中给定点的引用访问该对象,该对象就会一直保持活动状态。但如果对象变得“可收集”,它可能很快就会被收集,但如果没有内存压力,它可能会浪费很长时间。
通常,如果有足够的内存,就没有理由真正删除对象。我唯一知道的例外就是密码。在这里,您使用了一个char数组,并在使用它之后用胡言乱语重写它。
对于本机堆栈:您的链接指示本机堆栈保存外部资源,例如文件。
https://stackoverflow.com/questions/35877057
复制相似问题