jvm 基礎知識和jvm 調優

類裝載分為以下 5 個步驟:
加載:根據查找路徑找到相應的 class 文件然后導入;
檢查:檢查加載的 class 文件的正確性;
準備:給類中的靜態變量分配內存空間;
解析:虛擬機將常量池中的符號引用替換成直接引用的過程。符號引用就理解為一個標示,而在直接引用直接指向內存中的地址;

不同虛擬機的運行時數據區可能略微有所不同,但都會遵從 Java 虛擬機規范, Java 虛擬機規范規定的區域分為以下 5 個部分:

程序計數器(Program Counter Register):當前線程所執行的字節碼的行號指示器,字節碼解析器的工作是通過改變這個計數器的值,來選取下一條需要執行的字節碼指令,分支、循環、跳轉、異常處理、線程恢復等基礎功能,都需要依賴這個計數器來完成;

Java 虛擬機棧(Java Virtual Machine Stacks):用于存儲局部變量表、操作數棧、動態鏈接、方法出口等信息;

本地方法棧(Native Method Stack):與虛擬機棧的作用是一樣的,只不過虛擬機棧是服務 Java 方法的,而本地方法棧是為虛擬機調用 Native 方法服務的;

Java 堆(Java Heap):Java 虛擬機中內存最大的一塊,是被所有線程共享的,幾乎所有的對象實例都在這里分配內存;

方法區(Methed Area):用于存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯后的代碼等數據。

初始化:對靜態變量和靜態代碼塊執行初始化工作。
新生代回收器:Serial、ParNew、Parallel Scavenge
老年代回收器:Serial Old、Parallel Old、CMS
整堆回收器:G1


CMS 是英文 Concurrent Mark-Sweep 的簡稱,是以犧牲吞吐量為代價來獲得最短回收停頓時間的垃圾回收器。對于要求服務器響應速度的應用上,這種垃圾回收器非常適合。在啟動 JVM 的參數加上“-XX:+UseConcMarkSweepGC”來指定使用 CMS 垃圾回收器。

CMS 使用的是標記-清除的算法實現的,所以在 gc 的時候回產生大量的內存碎片,當剩余內存不能滿足程序運行要求時,系統將會出現 Concurrent Mode Failure,臨時 CMS 會采用 Serial Old 回收器進行垃圾清除,此時的性能將會被降低。

java -XX:+PrintFlagsFinal 打印所有gc 參數

-Xms2g:初始化推大小為 2g;
-Xmx2g:堆最大內存為 2g;
-XX:NewRatio=4:設置年輕的和老年代的內存比例為 1:4;
-XX:SurvivorRatio=8:設置新生代 Eden 和 Survivor 比例為 8:2;
–XX:+UseParNewGC:指定使用 ParNew + Serial Old 垃圾回收器組合;
-XX:+UseParallelOldGC:指定使用 ParNew + ParNew Old 垃圾回收器組合;
-XX:+UseConcMarkSweepGC:指定使用 CMS + Serial Old 垃圾回收器組合;
-XX:+PrintGC:開啟打印 gc 信息;
-XX:+PrintGCDetails:打印 gc 詳細信息。

t調優工具 jstack,jmap, jconsole arthas

jjmap -histo 9952 > ./log.txt

jjmap -histo:live 9952> log.txt

jjmap -heap

jjstack -l 9952

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712132.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712132.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712132.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# 異步返回類型詳解

在現代軟件開發中,異步編程已經成為一種重要的編程范式,尤其是在需要與I/O密集型操作交互的上下文中,比如網絡請求、數據庫操作等。C# 語言提供了強大的異步支持,使得異步編程變得更加簡單和直觀。本文將詳細介紹C#中異步返回類型…

vue3學習 【5】watch的使用

什么是watch 當我們需要根據一個數據的變化來進行一些操作的時候我們需要使用偵聽器,它能夠在響應式數據發生變化的時候觸發提供的回調函數 基礎偵聽 watch 可以偵聽不同的數據源。例如: ref計算屬性響應式對象getter函數多個數據源組層的數據 cons…

20240229金融讀報:央行阿拉善創新融資模式與碳排放權交易條例實施,新春政策聚焦新生產力及金融風險防范

1、人民銀行阿拉善盟分行實例:再貸款產業鏈(活體牲畜抵押貸款牲畜死亡率保險)、“再貸款新型農牧業經營主體”(基礎設施薄弱、產業結構單一,籌集資金創辦嘎查集體經濟股份合作社貸款) 2、建設銀行實例&…

oracle11安裝及使用

安裝oracle11 官網下載地址 Oracle Database 11g Release 2 for Microsoft Windows (x64) 官網下載慢可訪問我的資源 也可以網盤獲取 鏈接:https://pan.baidu.com/s/1RDrGkqDA7tfKRnpJXUBMDw 提取碼:z3na 上傳安裝包到服務器 在指定目錄下創建文件…

adb命令

1. 常用命令: adb devices #查看連接設備adb -s cf27456f shell # 指定連接設備使用命令adb install test.apk # 安裝應用adb install -r demo.apk #安裝apk 到sd 卡:adb uninstall cn.com.test.mobile #卸載應用,需要指定包adb uninstall -…

Windows系統x86機器安裝龍芯(loongarch64)3A5000虛擬機系統詳細教程

本次介紹在window系統x86機器上安裝loongarch64系統的詳細教程。 1.安裝環境準備。 首先,你得有臺電腦。 配置別太差,至少4核8G內存,安裝window10或者11都行(為啥不能是Window7,你要用也不是不行,你先解決…

leetcode:860.檸檬水找零

題意:按照支付順序,進行支付,能夠正確找零。 解題思路:貪心策略:針對支付20的客人,優先選擇消耗10而不是消耗5,因為5可以用來找零10或20. 代碼實現:有三種情況(代表三種…

vscode中使用python的cv2.imread()讀取圖片為None

這是之前的代碼: import cv2img_path c:\\Users\\LENOVO\\Desktop\\QQ截圖20240228234801.jpg print(img_path) print(cv2.__version__)img cv2.imread(img_path) print(img)運行結果: c:\Users\LENOVO\Desktop\QQ截圖20240228234801.jpg 3.4.1 None…

Linux下主線程 return 0 和 pthread_exit(NULL) 的區別

1. 背景 在Linux環境下,主線程以return 0結束時,程序會在主線程運行完畢后結束。而當主線程以pthread_exit(NULL)作為返回值時,主線程會等待子線程結束后才會退出程序。本文將詳細探討這兩種方式的區別,并提供相應的代碼示例。 …

String類的使用

String常用的構造方法 String的源碼 內部是一個數組和hash值,涉及到常量池后續補充(常量池:存儲相同的字符時只會存儲一租) String的比較 equals()與:String里面為我們提供了許多方法,可直接調用&#xf…

2024最新-ubuntu22.04安裝最新版QT6.6~6.8教程

? 1. 在官網下載 online_installer: https://download.qt.io/archive/online_installers/4.7/qt-unified-linux-x64-4.7.0-online.run 或者直接鏡像站下載: http://mirrors.ustc.edu.cn/qtproject/archive/online_installers/4.7/qt-unified-linux-x6…

數據結構之二叉樹的精講

𝙉𝙞𝙘𝙚!!👏🏻???????👏🏻??????? 👏🏻?????:Solitary_walk ?? ━━━┓ - 個性標簽 - :來于“云”的“羽球人”。…

蘋果汽車項目的敗局:起步失誤與方向迷茫

蘋果汽車的發展方向內部分歧導致項目多年掙扎,最終在本周宣布終止。 Brian X. Chen 和 Tripp Mickle 從項目初期就開始關注蘋果的汽車項目。 在過去十年中,許多參與蘋果秘密汽車項目“泰坦”(內部代號)的員工戲稱其為“泰坦尼克…

Python實現鏈表:從基礎到應用

一、引言 鏈表是一種常見的數據結構,它由一系列節點組成,每個節點包含數據和指向下一個節點的指針。鏈表在內存中的存儲不是連續的,這使得它在插入和刪除操作上具有較高的效率。本文將使用Python語言來實現一個簡單的鏈表,并展示其…

【前端面試題1】偽類與偽元素有什么區別

偽類與偽元素的區別: 1.偽類使用單冒號,而偽元素使用雙冒號。如 :hover 是偽類,::before 是偽元素 2.偽元素會在文檔流生成一個新的元素,但偽元素本身并不是DOM元素,并且可以使用 content 屬性設置內容 CSS偽類與偽元…

卷積神經網絡基本概念補充

卷積(convolution)、通道(channel) 卷積核大小一般為奇數,有中心像素點,便于定位卷積核。 步長(stride)、填充(padding) 卷積核移動的步長(stride…

小白提示您:FaceTime詐騙持續高發,小伙伴們謹防詐騙!

前幾天小白的iPhone突然接到了個FaceTime通話請求,說是某抖音賬號需要續費啥的才能解鎖某些功能。(具體小白也記不太清了) 這幾天也有朋友說有個支付寶客服打FaceTime通話給他說快遞出現了點問題,需要操作認證一下才能退款啥的。…

多線程萬字詳解

進程和線程是計算機程序執行的兩個重要概念。 1.進程: 進程是操作系統分配資源的基本單位,每個進程都有自己獨立的地址空間,每啟動一個進程,系統就會為它分配內存。進程間通信比較復雜,需要用到IPC(InterP…

js監聽F11觸發全屏事件

當用戶使用 F11 鍵進行瀏覽器全屏時,由于此時并非通過瀏覽器提供的 Fullscreen API 進入全屏模式,因此無法通過 fullscreenchange 事件來監聽全屏狀態的變化。在這種情況下,可以通過監聽 resize 事件來檢測瀏覽器窗口大小的變化,從…

【學習日記】快速排序

思想 快速排序之所以快,一個重要原因就是其每一次遍歷,都把本輪要排序的數字(稱為軸)放到了最終的位置上快排使用分治思想,所以一般采用遞歸實現,非遞歸版本可以用棧根據第一點,我們需要一個函…