狂神jvm
零碎知識點
JDK>jre>jvm(包含)
jvm使用c語言寫的
java也叫C+±-?
java去掉了C++繁瑣的東西,指針,內存管理
棧內不可能會有垃圾回收。為什么?
棧用完就會彈出去,不彈出去下一個無法讀取運行,有垃圾程序堵死。
方法區屬于一個特殊的堆。jvm調優主要是在堆里,
所以jvm調優99%的情況都是在調方法區和堆區
java創建對象,堆內存放實例,棧內存放地址。棧內地址映射著堆內的實例對象。所以棧內沒什么垃圾,垃圾在堆內。
類是模板,是抽象的;對象是具體的
一. 類加載器???
先空著
二. 雙親委派機制
https://blog.csdn.net/codeyanbao/article/details/82875064
為什么在一直往上查詢類加載器時,到啟動類加載器就顯示為null?
再往上就是C++代碼的實現,無法查看
.java–>.class–>類加載器---->jvm(C寫的)
類裝載器采用的機制是雙親委派模式。
三. 沙箱安全機制
四. native關鍵字,PC寄存器,方法區
1. native
(1)凡是帶了native關鍵字的,說明java的作用范達不到了,會去調用底層C語言的庫。
(2)在本地方法棧調用 本地方法接口:JNI.
(3)JNI作用:擴展Java的使用,融合不同的編程語言為Java所用!在Java誕生的時候,C/C++橫行,想要立足,必須要有調用C/C++的 程序。
(4)在最終執行的時候,通過JNI加載本地方法庫中的方法。
(5)什么情況下調用native:操作硬件的情況等,如驅動打印機,管理系統(這個是什么~~)等
2. PC寄存器
程序計數器(第一次聽,以后用到在搜吧)
3. 方法區
靜態static變零,常量,類信息(構造方法,接口定義),運行時的常量池存在方法區中,但是實例變量存放在堆內存中,和方法區無關。
五. 棧
1. 棧幀
? https://blog.csdn.net/ylyuanlu/article/details/18947951
? https://blog.csdn.net/qian520ao/article/details/79118474
? https://blog.csdn.net/heihaozi/article/details/103830143
(1)棧幀就是壓棧的那個
(2)每執行一個方法都會產生一個棧幀
(3)程序正在執行的方法,一定處于棧的頂部
2. 棧,堆,方法區的交互關系
(1)三塊區域,方法區存在常量池
(2)new一個對象,在棧內放一個引用地址,在堆內存放實例
(3)引用地址指向實例,實例中調用方法區中的常量池
也就是說:對象實例化的過程是什么?
? 沒找到相應文章
六. 堆
三種jvm
(1)HotSpot(Sun公司)
(2)JRockit
(3)j9vm
Heap, 一個JVM只有一個堆內存,堆內存的大小是可以調節的。
類加載器讀取了類文件后,一般會把什么東西放到堆中? 類, 方法,常量,變量~,保存我們所有引用類型的真實對象
堆內存中還要細分為三個區域:
●新生區(伊甸園區) Young/New
●養老區old
●永久區Perm
(1)幸存區是新生區-養老區的過渡
(2)GC垃圾回收,主要是在伊甸園區和養老區
(3)假設內存滿了,OOM,堆內存不夠! java.lang.OutOfMemoryError:Java heap space
(4)永久存儲區里存放的都是Java自帶的 例如lang包中的類 如果不存在這些,Java就跑不起來了
(5)在JDK8以后,永久存儲區改了個名字(元空間)
5. 新生區、老年區
重GC和輕GC:伊甸園滿了就觸發輕GC,經過輕GC存活下來的就到了幸存者區,幸存者區滿之后意味著新生區也滿了,則觸發重GC,經過重GC之后存活下來的就到了養老區。真理:經過研究,99%的對象都是臨時對象
6. 永久區
(1)堆滿,報錯OOM,如何解決?
? 1)手動配置類的參數,擴大堆的內存空間。
? 2)倘若還報錯,說明程序有誤。可能有什么死循環代碼,垃圾代碼等。
(2)邏輯上存在,物理上不存在(通過計算,元空間沒分配內存)
(3)常用的配置參數含義:
? 1)-Xms 設置初始化內存分配大小 默認CPU的1/64
? 2)-Xmx 設置最大分配內存,默認1/4
? 3)-XX:+PrintGCDetails //打印GC垃圾回收信息
? 4)-XX:+HeapDumpOnOutOfMemoryError //oom DUMP 打印堆內存溢出信息
七. GC算法
引用計數法(不中用)
復制算法???
請看狂神的筆記https://blog.csdn.net/qq_40126686/article/details/108279919
標記清楚算法和標記清楚壓縮算法
八. JMM
???jvm都問爛了,現在很多問這個
總結
- 上一篇: LeetCode 825 friends
- 下一篇: html5 a标签,img标签,em和i