欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java 中堆和棧

錢衛國1年前7瀏覽0評論

Java 中有兩種數據結構,堆和棧。堆是一種動態分配的內存池,用于存儲對象。棧是一種先進后出的數據結構,用于存儲函數調用時的變量和參數。

// 棧
public void foo() {
int a = 1;
int[] b = {2, 3, 4};
String c = "hello";
bar(a, b, c);
}
public void bar(int x, int[] y, String z) {
// ...
}
// 堆
public class Student {
private String name;
private int age;
// ...
}
public void baz() {
Student s = new Student();
s.setName("Alice");
s.setAge(20);
}

棧中的變量和參數在函數結束后會自動釋放。堆中的對象則需要通過垃圾回收機制來進行釋放。在 Java 中,所有的對象都在堆中創建。

一些常見的 Java 對象,比如字符串和數組,都是存儲在堆中的。通常,對象只有在被顯式地設置為null或失去了所有引用后,才可以由垃圾回收機制進行回收。

因為堆是動態分配的內存池,所以其容量也是動態變化的。棧則具有固定 的容量。當棧空間不足時,程序會拋出棧溢出異常,而當堆空間不足時,程序會拋出內存溢出異常。