JVM學習筆記6 java堆分析

2021-07-10 05:25:05 字數 628 閱讀 6284

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 繼承

不足之處,歡迎專家 同行 讀者批評指正。我們寫 當然是希望越簡單越好 這個簡單是說簡潔沒有廢話,但也不是極端的少,而是必須便於理解,不是秀操作的那種一行寫完原本十行的邏輯,讓別人讀起來像做解謎遊戲一樣。繼承就有這個好處。在物件導向的思想中,我們操作的是乙個個的物件。如果物件之間有從屬關係,我們再去寫...