1

老物件我有Order_Item类的实例,而这些路径GC根所(不包括幻象/弱/软引用): enter image description here收集来自Java堆

我有几个问题:
1)我不确定Order_Item是否会被垃圾收集。
我试图运行System.gc(),并且对象保留在堆中。
是否允许根据提供的图像进行收集?

2)“本地堆栈”是什么意思? 据我了解,它被视为GC根。 http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Fconcepts%2Fgcroots.html 为什么某些对象(即Order 0x782032cf8)保存在“Native Stack”中?

3)如果我从GC Root引用到对象A,那么这个对象将不会被垃圾回收?对?
如果是这样,我的Order_Item对象不能被垃圾收集? 4)如果3是正确的,我怎么能找到什么保持对象0x7821da5e0和0x782032cf8,以及如何取消引用/删除它们?

回答

0

你不能真的强制垃圾收集器删除给定的对象。您知道,只要对象在程序中给定点的引用可以访问,对象就保持活动状态。但是,如果物体变得“可收集”,它可能很快就会被收集起来,但是如果对记忆没有压力,它可能会在很长一段时间里变得愚蠢。

通常,如果有足够的内存,没有理由真的删除对象。我知道的唯一例外是密码。在这里,你使用了一个char数组,并在你使用它时用无意义的方式覆盖它。

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

+0

老实说,我不明白你的答案。我的同事也是。 – AndreyP

+0

我会更彻底地解释它,但给我一个暗示,你不明白。 –

+0

我的问题是有条理的,所以我不仅会理解当前的情况,还会理解未来的情况。以同样的方式得到答案是很棒的。 1)你知道....程序。 - 所以答案是否定的? 2,3,4 - 未回答。 – AndreyP