# JVM 的 gc 作用與設定 * gc是什麼?為何gc? > gc指的是回收 memory的一種機制,目的是能有效率的重複使用,主要作用於 method area 與 heap area,當作用域的 object 沒有再被參考時,它將在下一次的gc時就會被銷毀。 > > gc分2種,分為full gc與普通gc;普通gc針對新生區,full gc針對年老區及新生區。gc也可以想像成戰場,經過撕殺能存活下來的才會保留在記憶體,新生區經過15次以上的gc仍存活下來,移到老年區,移到老年區的object 只有jvm執行full gc時再會再次上場戰鬥。 * 何時gc? > 1. background process 定期執行 > 2. 當 heap 達到70、80% 容量時自動執行 * heap memory 爆了會出現什麼 exception?為何有時爆掉不會報exception? > 1. java.lang.OutOfMemoryError: Java heap space > 2. 當記憶體不夠且又需要執行 new object 時,JVM就掛了,此時連 exception 都沒辦法報,此時可以改用 throwable,就能接獲 exception。 * 說說heap memory系統的預設,怎麼指定大小? > JVM的預設大小最小是ram 的1/64,最大是ram的 1/4。 可以透過手動鍵入參數: -Xms64m or -Xms64M (最小值) -Xmx1g or -Xmx1G (最大值) ###### tags: `學習筆記` `JAVA` `JVM`