-Xmx1g -> JVM最大允許分配的堆內存,按需分配
運行結果:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at geym.jvm.ch8.oom.SimpleHeapOOM.main(SimpleHeapOOM.java:14)
原因:
佔用大量堆空間,直接溢出
解決方法:
增大堆空間,及時釋放內存
-XX:MaxPermSize -> JVM永久帶的最大內存,按需分配,允許class回收
運行結果:
Caused by: java.lang.OutOfMemoryError: PermGen space
原因:生成大量的類,Class不能回收
解決方法:
增大Perm區,允許Class回收
-Xss1m -> 線程棧大小
運行結果:
Exception in thread "main" java.lang.OutOfMemoryError:
unable to create new native thread
原因:
這裏的棧溢出指,在創建線程的時候,需要爲線程分配棧空間,這個棧空間是向操作系統請求的,如果操作系統無法給出足夠的空間,就會拋出OOM
解決方法:
減少堆內存,減少線程棧大小
-XX:ReservedCodeCacheSize -> 編譯器的代碼緩存大小