在Java中,內(nèi)存被分為兩種類型:棧內(nèi)存和堆內(nèi)存。
棧內(nèi)存是用于存儲(chǔ)局部變量和方法參數(shù)的地方,它是一塊較小的內(nèi)存,在方法運(yùn)行時(shí)被分配。當(dāng)方法運(yùn)行結(jié)束時(shí),棧內(nèi)存中的數(shù)據(jù)也被釋放。
堆內(nèi)存是用于存儲(chǔ)對(duì)象的地方,它是一塊較大的內(nèi)存,需要手動(dòng)分配和釋放。當(dāng)一個(gè)對(duì)象被創(chuàng)建時(shí),它就被分配在堆內(nèi)存中。當(dāng)它不再被引用時(shí),它就可以被垃圾回收器回收。
public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } } public static void main(String[] args) { Person p = new Person("Tom", 27); // p是在堆內(nèi)存中分配的Person對(duì)象 }
在上面的例子中,當(dāng)調(diào)用new Person()時(shí),JVM在堆內(nèi)存中分配一塊空間來(lái)存儲(chǔ)一個(gè)Person對(duì)象,并將變量p指向這個(gè)對(duì)象。所以p是存儲(chǔ)在棧內(nèi)存中指向堆內(nèi)存中的Person對(duì)象。