JVM之java堆記憶體溢位
Java堆用於儲存物件例項,只要不斷的建立物件,並且保證GC來不及清理java物件,那麼在物件數量達到最大堆的容量後就會產生堆記憶體溢位(堆記憶體大小可以通過 -Xms20M -Xmx20M 來設定,最大堆和最小堆設定的一樣,可避免堆自動擴充套件)
java堆記憶體溢位異常測試JDK1.7
執行結果java.lang.OutOfMemoryError: Java heap spacejava堆記憶體溢位異常是比較常見的異常,,當出現java堆記憶體溢位時,異常堆疊資訊"java.lang.OutOfMemoryError"會跟著進一步提示"Java heap space"可以用記憶體檢測工具(MemoryAnalyzerTool)對Dump出來的堆轉儲快照進行分析,分清是記憶體洩漏,還是記憶體溢位如果是記憶體溢位,檢視jvm的堆引數-Xms與-Xmx與機器實體記憶體對比看是否還可以調大,從程式碼上檢測是否存在某些物件生命週期過長,持有狀態時間過長的情況,嘗試減少程式執行期的記憶體消耗public class HeapOOM { static class OOMObject{ } public static void main(String[] args) { List<OOMObject> list = new ArrayList<OOMObject>(); while(true) { list.add(new OOMObject()); } } }