jvm中有堆、永久區、執行緒棧、直接記憶體這4個記憶體空間
(1)堆溢位:解決方法,增大堆空間,及時釋放記憶體
(2)永久區溢位:解決方法,增大perm(持久代)區,允許class**
(3)執行緒棧溢位:解決方法,減少執行緒,增大物理記憶體或者減小堆空間
(4)直接記憶體溢位:導致原因 bytebuffer.allocatedirect()無法從作業系統獲得足夠的空間,解決方法:減小堆記憶體或者手動的觸發gc
支配樹
淺堆–乙個物件結構所占用的記憶體大小
–3個int型別以及乙個引用型別合計占用記憶體3*4+4=16個位元組。再加上物件頭的8個位元組,因此string物件占用的空間,即淺堆的大小是16+8=24位元組
–物件大小按照8位元組對齊
–淺堆大小和物件的內容無關,只和物件的結構有關 深堆
------乙個物件唄gc**後,可以真實釋放的記憶體大小
———只能通過物件訪問到的(直接或者間接)所有物件的淺堆之和(支配樹) 比如
class a
calss b
class c{}
則物件a的深堆是a+b+c的淺堆之和
6 Java學習之 列舉
列舉是一種規範,它規範了引數的形式,這樣就可以不用考慮型別的不匹配,並且顯示的替代了int型引數可能帶來的模糊概念。常用來定義乙個final型別的變數 常量 保證輸入安全。如 日期,季節,錯誤碼等。public class enumtest1 列舉也可以象一般的類一樣新增方法和屬性,你可以為它新增靜...
堆記憶體溢位的測試類 JVM學習筆記
記個筆記,手寫乙個測試類,模擬堆記憶體溢位。堆記憶體溢位測試類 vm agrs xms10m xmx10m xx heapdumponoutofmemoryerror author lixiang date 2019年04月12日 14 44 history 2019年04月12日 14 44 li...
Java 學習筆記 6 繼承
不足之處,歡迎專家 同行 讀者批評指正。我們寫 當然是希望越簡單越好 這個簡單是說簡潔沒有廢話,但也不是極端的少,而是必須便於理解,不是秀操作的那種一行寫完原本十行的邏輯,讓別人讀起來像做解謎遊戲一樣。繼承就有這個好處。在物件導向的思想中,我們操作的是乙個個的物件。如果物件之間有從屬關係,我們再去寫...