『壹』 java中,MinorGC、MajorGC、FullGC 什麼時候發生
minorGC:新生代滿了,就發生
FullGC:新生代滿了,老年代也滿了,還有新對象要產生,就發生
majorGC=FullGC
『貳』 Java中full gc什麼意思
gc是垃圾回收的意思(gabage
collection),內存處理器是編程人員容易出現問題的地方,忘記或者錯誤的內存回收導致程序或者系統的不穩定甚至崩潰,java的gc功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,java語言沒有提供釋放已分配內存的俄顯示操作方法。
希望能幫到你,謝謝!
『叄』 java 怎樣規避full gc
據我觀察JAVA程序,一般在命令行模式下運行JAVA任務,JDK可以承受的內存上限大概是機器物理內存的1/4。
比如我的伺服器是16G的內存,那麼JAVA程序可以佔用的最大內存是4G左右,超出就報溢出。
所以在一般程序運行中,JAVA內存逐漸從
100MB 200MB, 300...1G...2G...... 膨脹到4G,在這個過程中,我的循環都設置了System.gc(),偶爾有佔用內存減少的時候,但是基本下降都很有限,然後過一會兒又繼續上升。直到上升到4G的時候,如果此時系統沒有明確的數據持續寫進內存,只是大量進行新建變數,賦值,然後生命周期結束待回收的過程,系統會大量進行GC的操作,保證JAVA內存不超過4G,但我似乎感覺一旦在內存在4G上下游動的時候,JAVA程序的性能就開始走低。
所以我的理解是,GC直到不得不執行的時候才會被執行,而且效果並不好。。。。
PS,如果是8G內存的伺服器,GC頻繁執行是在JAVA佔用內存到達2G的時候。
同不知道如何進行高效的內存回收。本來沒有任何寫入內存操作的程序,但是程序處理問題一大了,佔有內存就很多。