我試圖減少Windows窗體應(yīng)用程序中的內(nèi)存泄漏。我現(xiàn)在正在查看包含幾個(gè)嵌入式表單的表單。我擔(dān)心的是,孩子的形式,在其構(gòu)造,采取父窗體參考,并保持在一個(gè)私有成員字段。所以,在我看來(lái),來(lái)的垃圾收集時(shí)間:父具有對(duì)兒童形式的引用,通過(guò)控制集合(子形式被嵌入在那里)。子窗體未GC'd。子形式具有與母體形式的引用,經(jīng)由專用成員字段。父窗體不GC'd。這是對(duì)垃圾收集器如何評(píng)估情況的準(zhǔn)確理解嗎?任何方式“證明”它用于測(cè)試目的?
3 回答

撒科打諢
TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
好問(wèn)題!
不會(huì),這兩種形式都是(可以)GC的,因?yàn)镚C不會(huì)直接在其他參考文獻(xiàn)中查找參考文獻(xiàn)。它僅查找所謂的“ Root”引用...包括堆棧上的引用變量(變量在堆棧上,實(shí)際對(duì)象當(dāng)然在堆上),CPU寄存器中的引用變量以及類中的靜態(tài)字段...
如果所有其他參考變量在通過(guò)上述過(guò)程找到的“根”參考對(duì)象之一的屬性中被引用(或在由根對(duì)象中的參考引用的對(duì)象中被引用),則僅對(duì)其進(jìn)行訪問(wèn)(和GC處理)等)。
因此,只有在“根”引用中其他位置引用了其中一種形式時(shí),這兩種形式才能從GC中安全使用。
只有我能想到的方法來(lái)“證明”的,(不使用記憶痕跡的實(shí)用程序)將創(chuàng)建這些形式對(duì)夫婦十萬(wàn),在一個(gè)循環(huán)的方法中,然后,而在方法,看一下應(yīng)用程序的內(nèi)存占用,然后從方法退出,調(diào)用GC,并在接地再看看。
- 3 回答
- 0 關(guān)注
- 489 瀏覽
添加回答
舉報(bào)
0/150
提交
取消