Java內(nèi)存可分為堆內(nèi)存和非堆內(nèi)存。
堆內(nèi)存就是存放對(duì)象的內(nèi)存空間,每個(gè)對(duì)象都存放在堆內(nèi)存中。堆內(nèi)存的大小可以通過JVM參數(shù)調(diào)整,一般默認(rèn)為物理內(nèi)存的1/4到1/2。
非堆內(nèi)存包含方法區(qū)和JVM自身使用的內(nèi)存空間。其中方法區(qū)是用來存儲(chǔ)虛擬機(jī)加載的類信息、常量池、靜態(tài)變量、即時(shí)編譯器編譯后的代碼等。JVM自身使用的內(nèi)存空間包括線程棧、程序計(jì)數(shù)器、本地方法棧等。
public class HeapMemoryTest {
public static void main(String[] args) {
System.out.println("Total memory: " + Runtime.getRuntime().totalMemory());
System.out.println("Max memory: " + Runtime.getRuntime().maxMemory());
}
}
通過以上代碼,我們可以獲取到Java虛擬機(jī)可以使用的內(nèi)存大小和最大可用內(nèi)存大小。
需要注意的是,過多地占用內(nèi)存會(huì)導(dǎo)致系統(tǒng)性能下降并可能引起內(nèi)存溢出。因此,在使用Java程序時(shí)應(yīng)注意內(nèi)存的合理分配和垃圾回收的定期進(jìn)行。