JAVA JVM+GC

類加載器雙親委派機制和沙箱安全機制

 應用啓動類加載器加載的時候會委派擴展類加載器進行加載,擴展類加載器會委託父類加載器啓動類加載器(類加載器雙親委派機制和沙箱安全機制)確保自定義的類與系統的類不起衝突
 如果啓動加載器無法加載就會委派擴展類加載器加載,如果擴展類加載器無法加載就會移交給系統類加載器加載,否則的話就會報錯(java.long.ClassLoader)

線程有多少種狀態
thread.start() 不是立刻啓動線程:是cpu和操作系統調度
線程的五種狀態
new,
runnable(運行),
blocked(阻塞),
waiting(一直等)和timed_waiting(等一定時間)  ==等待
terminated(終結死亡)
java 多線程三部曲就是判斷,幹活,標誌位加喚醒通知
java native Interface  簡稱JNI(調c的函數庫)
native就是java調c
728行 native
throw 就是拋到了jvm虛擬機中的運行時數據區(runtime data area)
運行時數據區包括方法區,虛擬機棧,本地方法棧,堆,程序計數器
方法區(共享區間):靜態變量+常亮+類信息+運行時常量池存放在方法區中+實例變量存在堆內存中
棧管運行,堆管存儲
棧(方法放在棧中)跟隨線程的生命期,線程結束棧內存也就釋放,對於棧來說不存在垃圾回收問題,生命週期和線程一致的,是線程私有的,基本類型的變量和對象的引用變量都是在函數的棧內存中分配的。
棧(後進先出或是先進後出):棧的數據結構(隊列)
棧內存放:8種基本類型的變量+對象的引用變量+實例方法都是在函數的棧內存中分配
每一個方法都有一個棧幀,棧幀包含3類數據:本地變量(輸入,輸出,方法內的變量),棧操作(出棧,入棧),棧幀數據(文件,方法等)
stockoverflowError(棧溢出; 堆棧溢出)遞歸或是無限循環
線程共享數據區:方法區,堆
線程私有數據區:虛擬機棧,本地方法棧,程序計數器
對象關係映射(英語:(Object Relational Mapping,簡稱ORM
hotsot
//可使用物理內存的1/4,一下是可使用的最大內存
System.out.println(Runtime.getRuntime().maxMemory()/1024/1024);
堆內存
    新生區
        伊甸區(滿minor GC 普通GC)
        倖存區0
        倖存區1
        
        養老區(滿major GC==full GC)<OOM(overofmemoreError(-Xms,-Xmx)(java heap space Java堆空間))數據庫連接池放在這裏
        
        永久存儲區(只有這裏沒有垃圾回收)是構建系統不能夠回收且保證系統穩定運行的元元素(不可剝奪,不可回收的自然元素)
永久代
jdk1.6 常量池1.6在方法區
jdk1.7 逐步去永久代 常量池在堆
jdk1.8 無永久代,常量池1.8在元空間

GC是什麼 
    (複製以後要交換,誰空誰是to)
    頻繁手機young區 GC使用的是複製算法(coppinng)不會產生碎片,保證完整性,但是會浪費內存
    較少收集old區
    基本不動perm區
    
    
    
 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章