JVM的內存空間 : 堆、永久區、線程棧、直接內存java
堆溢出:java.lang.OutOfMemoryError: Java heap spacespa
解決方法:增大堆空間,及時釋放內存操作系統
永久區溢出: Caused by: java.lang.OutOfMemoryError: PermGen space
解決方法:增大Perm區 容許Class回收
線程棧溢出: java.lang.OutOfMemoryError:unable to create new native thread
解決方法:減小堆內存,減小線程棧大小
直接內存 溢出 ByteBuffer.allocateDirect()沒法從操做系統得到足夠的空間
減小堆內存、有意觸發GC 線程
在對象引用圖中,全部指向對象B的路徑都通過對象A,
則認爲對象A支配對象B
若是對象A是離對象B最近的一個支配對象,
則認爲對象A爲對象B的直接支配者
支配者被回收,被支配對象也被回收3d
一個對象結構所佔用的內存大小對象
3個int類型以及一個引用類型合計佔用內存3*4+4=16個字節。再加上對象頭的8個字節,所以String對象佔用的空間,即淺堆的大小是16+8=24字節
對象大小按照8字節對齊
淺堆大小和對象的內容無關,只和對象的結構有關
blog
一個對象被GC回收後,能夠真實釋放的內存大小
只能經過對象訪問到的(直接或者間接)全部對象的淺堆之和 (支配樹)
顯示入引用(incoming)和出引用(outgoing)
內存