1. 程式人生 > >java 堆 棧 常量池

java 堆 棧 常量池

靜態 開始 text xms 信息 虛擬 堆內存 long ron

java 中保存new 出來的對象(每個對象都包含一個與之對應的class的信息,【class信息存放在方法區】),堆中分配的內存,有虛擬機的自動垃圾回收器管理,棧內存只對其所屬線程可見。

java 中保存一些基本數據類型 (int,long,byte,double,float,char,boolean,short)和引用變量,堆內存對所有線程可見。

異常錯誤

如果棧內存沒有可用的空間存儲方法調用和局部變量,JVM會拋出java.lang.StackOverFlowError。
而如果是堆內存沒有可用的空間存儲生成的對象,JVM會拋出java.lang.OutOfMemoryError。

空間大小

棧的內存要遠遠小於堆內存,如果你使用遞歸的話,那麽你的棧很快就會充滿。如果遞歸沒有及時跳出,很可能發生StackOverFlowError問題。
你可以通過-Xss選項設置棧內存的大小。-Xms選項可以設置堆的開始時的大小,-Xmx選項可以設置堆的最大值。

方法區:

又叫靜態區,跟堆一樣,被所有的線程共享。它用於存儲已經被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯後的代碼等數據

java 堆 棧 常量池