JVM-(8)JVM啟動的常用命令以及參數

JVM啟動的常用命令以及參數

在上文 JVM 堆內存邏輯分區 中已經使用過一些 jvm 啟動命令,本文著重講述JVM啟動命令用法以及一些常用的參數

一. 基本命令格式

java [options] classname [args...]
java [options] -jar filename.jar [args...]

① [options] - 命令行選項(可選)

比如標準參數 -version ,非標準參數 -Xms,非穩定參數 -XX:+PrintGCDetails,下面有詳細說明

② classname - 要執行的類(必需)

指定包含 main 方法的類的全限定名:

java com.example.MyApp

③ [args…] - 傳遞給 main 方法的參數(可選)

這些參數會傳遞給應用程序的 main 方法的 String[] args 參數:

java MyApp arg1 arg2 arg3

④ 完整示例

# 復雜的實際應用示例
java \-Xms1g -Xmx4g \                  # 堆內存設置-XX:+UseG1GC \                   # 使用 G1 垃圾收集器-XX:MaxGCPauseMillis=200 \       # 最大 GC 暫停時間-Dspring.profiles.active=prod \  # Spring 環境配置-Dlog4j.configurationFile=conf/log4j2.xml \  # 日志配置-cp "lib/*:app.jar:config" \     # 類路徑設置com.example.MainApplication \    # 主類--server.port=8080 \             # 應用參數--database.url=jdbc:mysql://localhost:3306/mydb

二. JVM 啟動常用命令參數分類

JVM 常用命令參數主要分為三類:

  1. 標準參數
    以 - 開頭,是所有 JVM 實現必須支持的參數,例如:
    -version:顯示版本信息
    -help:顯示所有標準參數列表
  2. 非標準參數
    以 -X 開頭,默認支持但可能不保證所有 JVM 實現兼容,例如:
    -Xms:設置初始堆內存(如 -Xms512m) ?
    -Xmx:設置最大堆內存(如 -Xmx2g) ?
    -Xmn:設置新生代大小(如 -Xmn2g)
  3. 非穩定參數
    以 -XX 開頭,可能隨版本變更而取消,需謹慎使用,例如:
    -XX:MetaspaceSize:設置元空間初始大小
    -XX:+PrintGCDetails:輸出詳細 GC 日志 ?

三. 常用命令舉例

非穩定參數舉例

① java -XX:+PrintCommandLineFlags

主要作用是:在 JVM 啟動時,打印出那些被顯式設置或由 JVM 自動設置的關鍵 -XX 參數及其值。

java -XX:+PrintCommandLineFlags -version

C:\Users\Administrator>java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=267006528 -XX:MaxHeapSize=4272104448 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

解讀:

  • -XX:InitialHeapSize=267006528 ,JVM 根據當前機器的內存,自動設置的初始堆大小約為 255 MB。
  • -XX:MaxHeapSize=4272104448 ,JVM 自動設置的最大堆大小約為 4 GB。(大概是電腦內存的 1/4)
  • -XX:+PrintCommandLineFlags ,我們自己設置的參數也被打印出來了
  • -XX:+UseCompressedClassPointers -XX:+UseCompressedOops,JVM 自動啟用了壓縮指針(64位系統上的優化,節省內存)。
  • -XX:-UseLargePagesIndividualAllocation
  • -XX:+UseParallelGC,JVM 自動選擇了并行垃圾收集器(Parallel GC)作為默認收集器。(這在JDK 8及之前是默認行為,高版本JDK默認可能是G1)

由上述 jvm 指令格式可知 classname 是必須參數,但是我們不需要運行某個類,只需要查看參數設置,那么添加 -version 參數可以告訴 JVM 不要嘗試執行任何應用程序,只需顯示版本信息然后退出
如果不加上 -version 會報如下錯:

② java -XX:+PrintFlagsInitial

查看所有不穩定指令的默認值

③ java -XX:+PrintFlagsFinal

查看所有不穩定指令最終生效的實際值

④ 打印GC日志

命令如下:

java -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log -jar yourapp.jar
  • -XX:+PrintGC (或 -verbose:gc):表示開啟簡要 GC 日志。
  • -XX:+PrintGCDetails:(強烈建議加上) 打印詳細的 GC 信息,包括各區(Eden, Survivor, Old)在 GC 前后的內存使用情況。沒有這個參數,日志信息會非常有限。
  • -XX:+PrintGCDateStamps 或 -XX:+PrintGCTimeStamps:
    • -XX:+PrintGCDateStamps:在日志中添加日期時間戳(如 2024-05-27T10:00:00.123+0800)。
    • -XX:+PrintGCTimeStamps:在日志中添加從 JVM 啟動開始計算的相對時間戳(如 12.345 秒)。生產環境推薦使用 PrintGCDateStamps。
  • -Xloggc:<file_path>:(強烈建議加上) 將 GC 日志輸出到文件,而不是控制臺。例如 -Xloggc:/logs/gc.log。

增加高級設置

java -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCCause -XX:+PrintTenuringDistribution -Xloggc:gc.log -jar yourapp.jar
  • -XX:+PrintGCCause:打印觸發 GC 的原因(如 Allocation Failure, System.gc() 等)。這在 JDK 8 之后通常是默認開啟的。
  • -XX:+PrintTenuringDistribution:打印晉升年齡閾值(對象在 Survivor 區熬過多少次 GC 才能進入老年代)的信息,對調優 Survivor 區大小非常有幫助。
  • -XX:+PrintHeapAtGC:在每次 GC 前后打印堆的詳細信息。非常詳細,但日志量會急劇增大,主要用于深度調試。
  • -XX:+PrintReferenceGC:打印處理各種引用(軟引用、弱引用、虛引用、Finalizer)的耗時。

⑤ 設置堆內存溢出時自動生成Dump文件

Dump 文件(轉儲文件)是計算機程序在特定時間點的狀態快照,它記錄了程序在發生錯誤、崩潰或特定觸發條件時的內存內容、執行狀態和系統信息,開發人員可以根據Dump文件事后分析到底發生了什么問題。
命令示例:

java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -Xmx512m -jar yourapp.jar
  • -XX:+HeapDumpOnOutOfMemoryError:啟用堆內存溢出時自動生成 dump 文件的功能
  • -XX:HeapDumpPath=:指定 dump 文件的保存路徑和文件名,可以指定文件名,也可以只指定目錄,當只指定目錄時,JVM 會自動生成文件名,格式為:java_pid.hprof

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

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

相關文章

GO學習記錄七——上傳/下載文件功能,添加啟動運行工具

本來計劃是學習Docker部署的&#xff0c;研究了一天沒搞出來&#xff0c;得出結論是需要翻墻&#xff0c;懶得弄了&#xff0c;暫時放置。 一、以下是&#xff0c;上傳/下載代碼&#xff0c;和之前是重復的&#xff0c;只多添加了&#xff0c;上傳/下載功能。 測試目錄為工程根…

SQL中對視圖的操作命令匯總

以下是基于搜索結果整理的SQL視圖操作命令匯總&#xff0c;按功能分類說明&#xff1a; 一、創建視圖 使用 CREATE VIEW 語句定義視圖&#xff0c;需指定視圖名稱和基礎查詢表達式&#xff1a; CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHER…

【Spring Cloud 微服務】2.守護神網關Gateway

目錄 1.API網關的作用 2.Spring Cloud Gateway 是什么&#xff1f; 3.核心由來與背景 1. 微服務架構的挑戰&#xff1a; 2. API 網關模式的興起&#xff1a; 3. Zuul 的局限性&#xff1a; 4. Spring Cloud Gateway 的誕生&#xff1a; 4.核心特征&#xff1a; 5.核心概…

解讀商業智能BI,數據倉庫中的元數據

之前的文章討論過數據分析、數據治理、數據倉庫等等&#xff0c;即使是非業內人員從字面意思&#xff0c;也是可以了解一二的&#xff0c;但是&#xff0c;很多人對于元數據可能就比較陌生了。那么&#xff0c;今天我們就來聊一聊元數據管理。數據倉庫要說元數據&#xff0c;那…

3 種無誤的方式刪除 Itel 手機上的短信

如果你希望釋放存儲空間、保護隱私&#xff0c;或者準備出售或轉讓手機&#xff0c;刪除 Itel 手機上的短信是一個實用的步驟。無論是收件箱中充斥著垃圾短信、過時的對話還是敏感內容&#xff0c;刪除不需要的短信可以讓你的消息體驗更加干凈和安全。本文將向你介紹 3 種簡單且…

【學習筆記】網絡安全專用產品類別與參考標準

一、基本標準 1.1 關鍵設備 網絡關鍵設備認證依據的強制標準為 GB 40050-2021。 1.2 專用產品 網絡安全專用產品認證依據的強制標準為 GB 42250-2022。 二、數據備份與恢復產品標準 相關標準&#xff1a; GB/T 29765-2021《信息安全技術 數據備份與恢復產品技術要求與測試評…

Pytho“張量”(Tensor)和 Java的“向量”(Vector)區別和聯系

在Python和Java中&#xff0c;“張量”&#xff08;Tensor&#xff09;和“向量”&#xff08;Vector&#xff09;是兩個不同語境下的概念&#xff0c;它們的設計目標、功能和應用場景存在顯著差異&#xff0c;但也存在一定的共性。以下從區別和聯系兩方面詳細說明&#xff1a;…

Ubuntu部署K8S集群

Ubuntu部署K8S集群 本例以三臺Ubuntu24.04為例,1master節點2worker節點 環境準備 修改hostname,三臺服務器分別執行 hostnamectl set-hostname k8s-master01hostnamectl set-hostname k8s-worker01hostnamectl set-hostname k8s-worker02 配置靜態ip(不同系統修改方法略微差…

openEuler系統安裝Ascend Docker Runtime的方法

在openEuler系統中使用NPU前一定要安裝Ascend Docker Runtime,也是在安裝CANN和mis-tei前的必備工作。 使用容器化支持、整卡調度、靜態vNPU調度、動態vNPU調度、斷點續訓、彈性訓練、推理卡故障恢復或推理卡故障重調度的用戶,必須安裝Ascend Docker Runtime。 下面是具體的安…

控制對文件的訪問:Linux 文件系統權限管理總結

在 Linux 系統中&#xff0c;文件權限是保障系統安全和數據完整性的核心機制。紅帽企業 Linux 9.0通過一套靈活且精細的權限控制體系&#xff0c;讓用戶能夠精確管理文件和目錄的訪問范圍。本章將系統梳理 Linux 文件系統權限的核心概念、管理方法及高級應用&#xff0c;為系統…

ansible中roles角色是什么意思?

文章目錄一、介紹二、Ansible Roles目錄編排三、創建role四、playbook調用角色五、roles中tags使用免費個人運維知識庫&#xff0c;歡迎您的訂閱&#xff1a;literator_ray.flowus.cn 一、介紹 角色是ansible自1.2版本引入的新特性&#xff0c;用于層次性、結構化地組織playbo…

pytorch 網絡可視化

1.torchsummary在 Anaconda prompt 中進入自己的 pytorch 環境&#xff0c;安裝依賴包。 bash pip install torchsummary 2.tensorboardX 3. graphviz torchviz 4.Jupyter Notebook tensorwatch 5.netron 6.hiddenlayer 7.PlotNeuralNet

可以一鍵生成PPT的AI PPT工具(最新整理)

在當今快節奏的職場環境中&#xff0c;高效制作專業PPT已成為一項必備技能。傳統PPT制作流程耗時費力&#xff0c;從構思大綱、搜集資料、撰寫內容到設計排版&#xff0c;往往需要數小時甚至數天時間。AI生成PPT工具的興起徹底改變了這一局面&#xff0c;讓職場人士能夠專注于內…

數倉核心概念闡述

數倉核心概念闡述一、數據倉庫建模模型二、數據處理架構三、流批處理架構演進**為什么需要流批融合&#xff1f;****1. Lambda 架構&#xff08;雙引擎護航&#xff09;****2. Kappa 架構&#xff08;流處理一統江湖&#xff09;****關鍵概念對照表****實際案例理解****演進趨勢…

Spring Boot 自動配置全流程深度解析

在 Spring Boot 的世界里&#xff0c;“約定優于配置” 理念通過自動配置機制展現得淋漓盡致。從一個簡單的SpringBootApplication注解開始&#xff0c;背后隱藏著一套精妙的自動配置加載流程。本文將從SpringBootApplication出發&#xff0c;逐步拆解自動配置類是如何被發現、…

AI:業務驅動與技術賦能:企業智能化應用的雙向進化深度指南

一、業務與技術的雙螺旋進化模型 1.1 從單向適配到雙向驅動的認知轉變 傳統的信息化建設往往遵循"業務提需求、技術做實現"的線性模式&#xff0c;這種模式在穩定的業務環境中確實有效&#xff0c;但在當前快速變化的數字化時代已經顯露出明顯的局限性。真正的數字化…

2721. 【SDOI2010】外星千足蟲

2721. 【SDOI2010】外星千足蟲 題解 題目描述 題目描述 公元2089年6月4日&#xff0c;在經歷了17年零3個月的漫長旅行后&#xff0c;“格納格魯一號”載人火箭返回艙終于安全著陸。此枚火箭由美國國家航空航天局&#xff08;NASA&#xff09;研制發射&#xff0c;行經火星、…

[RestGPT] RestGPT智能體

第3章&#xff1a;RestGPT智能體 歡迎回來&#x1f43b;??? 在第1章&#xff1a;配置與環境中&#xff0c;我們為RestGPT配備了必要的"鑰匙和密碼"&#xff1b;在第2章&#xff1a;OpenAPI規范(OAS)中&#xff0c;我們為它提供了與在線服務對話的"使用說明…

筆記本電腦Windows+Ubuntu 雙系統,Ubuntu無法掛載Windows的硬盤 報錯問題解決

目錄 一、前情提要 二、解決方案步驟 第一步&#xff1a;進入Windows進行修復和檢查。這是最關鍵的一步&#xff0c;目的是讓Windows來檢查和修復它自己的文件系統。 第二步&#xff1a;回到Ubuntu驗證掛載 三、總結與預防 一、前情提要 網上找到許多解決方案&#xff0c…

加密貨幣與區塊鏈:六大刑事重災區

高鵬律師&#xff08;首席數據官&#xff09;數字經濟團隊創作&#xff0c;AI輔助在數字貨幣的世界里&#xff0c;一夜暴富的傳說屢見不鮮&#xff0c;但頃刻間失去所有的悲劇也時有發生&#xff0c;現在&#xff0c;我將為您剖析加密貨幣與區塊鏈領域的六大刑事風險重災區&…