日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

狂神jvm

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 狂神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寫的)

  • 類裝載器采用的機制是雙親委派模式。

  • 三. 沙箱安全機制

  • (59條消息) java中的安全模型(沙箱機制)_改變ing-CSDN博客_沙箱安全機制
  • https://blog.csdn.net/qq_41813208/article/details/108091557
  • 四. 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 打印堆內存溢出信息

  • JPofiler工具:內存快照分析工具
  • 七. GC算法

  • 引用計數法(不中用)

  • 復制算法???

    請看狂神的筆記https://blog.csdn.net/qq_40126686/article/details/108279919

  • 標記清楚算法和標記清楚壓縮算法

  • 八. JMM

    ???jvm都問爛了,現在很多問這個

    總結

    以上是生活随笔為你收集整理的狂神jvm的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。