Java中的變量可以分為兩種:基本數據類型和引用數據類型。基本數據類型的值在內存中直接存儲,而引用數據類型則是存儲在heap內存中,并且在內存中有一個唯一標識符,即內存地址。
Java的垃圾回收機制(GC)是負責回收無用對象,釋放內存空間的機制。在Java中,開發者不需要手動釋放內存空間,因為GC會自動來完成這個任務。GC會定時執行,掃描heap內存中對象的引用是否有效,如果沒有引用指向它,那么就認為對象已經死亡,將其回收。
public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } } public class GCDemo { public static void main(String[] args) { Person p1 = new Person("Tom", 20); Person p2 = new Person("Jack", 22); p1 = null; System.gc(); } }
在這個例子中,我們創建了兩個Person對象p1和p2。然后將p1的引用指向null,表示不再使用p1。當不再使用p1的時候,如果GC執行,那么這個對象將被回收。
GC的出現讓開發者不需要考慮太多內存的使用情況,從而可以更加專注于業務邏輯的實現。然而,如果對象無用但又不會被GC回收,那么就可能會導致內存泄漏,最終導致應用程序崩潰。因此,在編寫程序時,要注意對象的生命周期,及時釋放不再使用的對象。