首頁 >Java >Java入門 >java中的gc是什麼

java中的gc是什麼

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼原創
2019-11-11 14:40:524325瀏覽

java中的gc是什麼

GC是垃圾收集的意思(Gabage Collection),記憶體處理是程式設計人員容易出現問題的地方,忘記或錯誤的記憶體回收會導致程式或系統的不穩定甚至崩潰。

Java提供的GC功能可以自動監控物件是否超過作用域以達到自動回收記憶體的目的,Java語言並沒有提供釋放已指派記憶體的顯示操作方法。

GC是垃圾收集器。 Java 程式設計師不用擔心記憶體管理,因為垃圾收集器會自動進行管理。若要要求垃圾收集,可以呼叫下面的方法之一:  

·System.gc()

· Runtime.getRuntime().gc()

Java是由C 發展出來的。

它擯棄了C 中一些繁瑣容易出錯的東西。其中有一條就是這個GC。

寫入C/C 程序,程式設計師定義了一個變量,就是在記憶體中開闢了一段對應的空間來存值。記憶體再大也是有限的,所以當程式不再需要使用某個變數的時候,就需要釋放這個記憶體空間資源,好讓別的變數來用它。在C/C 中,釋放無用變數記憶體空間的事情要由程式設計師自己來解決。是說當程式設計師認為變數沒用了,就該寫一條程式碼,釋放它佔用的記憶體。這樣才能最大程度地避免記憶體外洩和資源浪費。

但是這樣顯然是非常繁瑣的。程式比較大,變數多的時候往往程式設計師就忘記釋放記憶體或是在不該釋放的時候釋放記憶體了。而且釋放記憶體這種事情,從開發角度說,不應該是程式設計師所應當關注的。程式設計師要做的應該是實現所需的程式功能,而不是耗費大量精力在記憶體的分配釋放上。

Java有了GC,就不需要程式設計師去手動釋放記憶體空間。當Java虛擬機器發覺記憶體資源緊張的時候,就會自動地去清理無用變數所佔用的記憶體空間。當然,如果需要,程式設計師可以在Java程式中明確地使用System.gc()來強制進行一次立即的記憶體清理。

因為明確聲明是做堆記憶體全掃描,也就是 Full GC,是需要停止所有的活動的(Stop The World Collection),你的應用能承受這個嗎?而其顯示呼叫System.gc()只是給虛擬機器一個建議,不一定會執行,因為System.gc()在一個優先權很低的執行緒中執行。 

php中文網,大量的免費Java入門教學,歡迎線上學習!

以上是java中的gc是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn