Java中內(nèi)存分為兩部分,一部分是棧內(nèi)存(Stack Memory),另一部分是堆內(nèi)存(Heap Memory),它們是Java程序運行的兩個主要組成部分。
棧內(nèi)存的大小有限,它主要用于保存方法調(diào)用的信息、局部變量和基本數(shù)據(jù)類型的值。每當(dāng)程序執(zhí)行一個方法時,棧就會為這個方法分配一塊內(nèi)存空間,當(dāng)方法執(zhí)行結(jié)束后,這個內(nèi)存空間就會被釋放。
public class Test { public static void main(String[] args) { int a = 10; // a 在棧內(nèi)存中分配空間 int b = 20; // b 在棧內(nèi)存中分配空間 int result = a + b; // result 在棧內(nèi)存中分配空間 System.out.println(result); // 輸出 result 的值 } }
堆內(nèi)存用于保存對象和數(shù)組。與棧內(nèi)存不同的是,堆內(nèi)存的大小是動態(tài)的,程序可以通過new關(guān)鍵字動態(tài)地分配堆內(nèi)存空間。當(dāng)對象或數(shù)組不再被引用或程序結(jié)束時,它們占用的空間會被GC(垃圾回收器)釋放。
public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public void printInfo() { System.out.println("name: " + this.name + ", age: " + this.age); } } public class Test { public static void main(String[] args) { User user = new User("Tom", 18); // 在堆內(nèi)存中分配User對象 user.printInfo(); // 輸出 User 對象的屬性值 } }
總的來說,棧內(nèi)存和堆內(nèi)存是Java程序中非常重要的概念。了解它們的區(qū)別和作用,能夠更好地理解Java內(nèi)存管理機(jī)制,也有助于編寫高效的Java代碼。
上一篇python畫多線段