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