Java中有一個非常重要的概念,那就是垃圾回收。在程序運行過程中,我們會使用一些對象,而這些對象一段時間后可能就無用了,如果不及時回收,會導致一些問題。
Java中的垃圾回收是通過R(Reference)來實現。R是指引用,也就是對象的地址。在程序中,我們可以通過R來訪問對象。而垃圾回收就是將沒有被任何R引用的對象釋放掉。Java程序員不需要手動釋放對象,因為垃圾回收器會自動完成這個任務。
public class MyClass { public static void main(String[] args) { MyClass obj1 = new MyClass(); MyClass obj2 = new MyClass(); obj1 = obj2; System.gc(); } @Override protected void finalize() throws Throwable { System.out.println("Object is destroyed by garbage collector"); } }
上面的代碼創建了兩個MyClass對象,然后讓obj1指向obj2,也就是讓第一個對象沒有被任何R引用。最后調用了System.gc()方法,手動觸發垃圾回收器。在MyClass類中覆蓋了finalize()方法,在對象被回收的時候,這個方法會被執行,輸出"Object is destroyed by garbage collector"。
N(Native)也是一個很重要的概念。Native方法是指在Java程序中調用由本地語言(比如C語言)實現的方法。我們知道,Java是一種高級語言,比較難處理一些底層的問題。而Native方法可以通過本地語言來實現,提高程序的效率。
public class NativeDemo { public native void printHello(); public static void main(String[] args) { new NativeDemo().printHello(); } static { System.loadLibrary("NativeDemo"); } }
上面的代碼定義了NativeDemo類,其中printHello()方法是Native方法,在c語言中實現。在main方法中,通過new操作符創建了一個NativeDemo對象,并調用了printHello()方法。同時,通過靜態塊加載了NativeDemo庫。這個庫包含c語言實現的native方法的具體實現。