讓我們想起一個內存泄漏程序,其中堆內存塊未被釋放並且程序終止。如果這是一個Java程序,內置的垃圾回收器會在程序退出之前自動釋放這個堆塊。內存泄漏 - 缺少垃圾回收器
但即使在C++中,如果程序退出,內核是否會自動解除與進程相關的所有空間。同樣在Java代碼中,內核必須爲進程的文本部分(代碼)取消分配空間(即使堆棧和堆部分被垃圾回收器解除分配)。那麼使用垃圾收集器功能的整體優勢 - 只是程序本身而不是內核釋放堆所需的時間節省的增加? (如果有任何這樣的節省)
編輯:我的主要疑問來看看答覆 - 當內存使用量達到極限時,GC會自動調用自己嗎?因爲如果只在程序終止之前調用GC,則對於長程序而言,它不會有用。
如果您的程序要運行很長時間會怎麼樣?在這種情況下,程序可以分配所有可用內存,當然也會失敗。因此,即使操作系統在終止時釋放內存,程序也必須對其分配的內存負責。 – Isaac
這將取決於。在程序中可以隨時調用Java中的GC嗎?通過調用我的意思是它可以自動觸發內存使用量達到極限時?因爲如果只有在程序終止時才調用GC,對於長時間運行的程序來說,這無關緊要。 – Hari