【jvm】主要参数

devtools/2024/12/23 15:57:05/

Java 虚拟机(JVM)有许多参数用于控制其行为和性能,下面是一些 主要的 JVM 启动参数,这些参数通常分为以下几类:

  1. 内存管理相关参数
    这些参数主要用来配置 JVM 的内存分配策略、堆内存、栈内存等。

-Xms
设置 JVM 启动时堆的初始内存大小(单位:字节、KB、MB、GB)。例如 -Xms512m 表示堆的初始大小为 512MB。

-Xmx
设置堆的最大内存大小(单位:字节、KB、MB、GB)。例如 -Xmx1024m 表示堆的最大大小为 1024MB。

java -XX:+PrintFlagsFinal -version | grep HeapSize

-Xmn
设置年轻代(Young Generation)的大小。年轻代内存用于存储新创建的对象。这个参数通常与 -Xmx 和 -Xms 配合使用。

-XX:NewSize= 和 -XX:MaxNewSize=
分别设置新生代(Young Generation)的初始大小和最大大小。

-XX:SurvivorRatio=
设置年轻代中 Eden 区和 Survivor 区的大小比率。默认是 8,意味着 Eden 区是 Survivor 区的 8 倍大小。

-XX:PermSize= 和 -XX:MaxPermSize=
设置永久代(PermGen)的初始大小和最大大小(JDK 8 后被 Metaspace 取代)。例如 -XX:MaxPermSize=256m。

-XX:MetaspaceSize= 和 -XX:MaxMetaspaceSize=
设置 Metaspace 的初始大小和最大大小(在 JDK 8 中,PermGen 被 Metaspace 替代)。

-XX:+UseG1GC
启用 G1 垃圾回收器。G1 是一种低延迟的垃圾回收器,适用于需要大堆并且需要低延迟的应用程序。

  1. 垃圾回收相关参数
    这些参数用于控制 JVM 中垃圾回收的行为。

-XX:+UseSerialGC
启用串行垃圾回收器(适合单线程环境)。

-XX:+UseParallelGC
启用并行垃圾回收器(适合多线程环境,提升吞吐量)。

-XX:+UseConcMarkSweepGC
启用并发标记清除垃圾回收器(CMS)。适用于对延迟敏感的应用。

-XX:+UseG1GC
启用 G1 垃圾回收器,适用于大堆内存和低延迟要求的应用。

-XX:MaxGCPauseMillis=

  1. 性能优化相关参数
    这些参数用于控制 JVM 性能优化策略。

-XX:+AggressiveOpts
启用一些潜在的性能优化(例如,启用 JIT 编译器的高级优化)。

-XX:CompileThreshold=
设置 JIT 编译器编译方法的调用次数阈值,超过此次数后将进行方法的即时编译。

-XX:+UseCompressedOops
启用压缩对象指针(Object Pointers)。对于 64 位 JVM,开启该选项可以节省内存。

-XX:MaxInlineLevel=
设置 JIT 编译器最大内联方法的深度,影响方法内联的优化。

  1. 调试与日志参数
    这些参数主要用于启用调试模式或记录 JVM 的运行日志。

-Xdebug
启用 JVM 调试。

-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
启用远程调试,address=5005 表示调试端口,suspend=n 表示不在启动时暂停。

-XX:+PrintGCDetails
打印垃圾回收的详细信息。

-XX:+PrintGCDateStamps
打印垃圾回收时的时间戳。

-XX:+PrintHeapAtGC
打印每次垃圾回收时堆内存的详细信息。

  1. JVM 其他常用参数
    -server
    启动服务器模式的 JVM,通常用于生产环境,优化了运行性能。

-client
启动客户端模式的 JVM,通常用于开发和测试环境,优化了启动时间。

-XX:+DisableExplicitGC
禁用 System.gc() 显式垃圾回收调用。

-XX:CICompilerCount=
设置 JIT 编译器的线程数。

  1. Java 版本相关参数
    -version
    输出当前 JVM 的版本信息。

-classpath 或 -cp
设置类路径。该参数指定 Java 程序查找类的路径。

-D=
设置 Java 系统属性。例如 -Dfile.encoding=UTF-8 设置文件编码为 UTF-8。

总结:
这些 JVM 启动参数允许开发人员根据应用程序的需求调整内存分配、垃圾回收策略、性能优化、调试选项等。适当的配置可以显著提高应用程序的性能和稳定性。


http://www.ppmy.cn/devtools/144733.html

相关文章

《计算机组成及汇编语言原理》阅读笔记:p28-p47

《计算机组成及汇编语言原理》学习第 3 天,p28-p47 总结,总计 20 页。 一、技术总结 1.Virtual Machine 2.stack 3.The fetch-execute Cycle 在控制单元(Control Unit, CU)里面有一个指令寄存器(Instruction Register, IR)和一个程序计数器(Program…

嵌入的律动,科技的心跳

在微观的世界中,有一种科技的生命以悄然无声的方式运作。它不张扬,却无处不在。嵌入式系统,正是这颗悄然跳动的科技之心。 它在汽车的引擎里点燃动力,让风驰电掣成为可能;它在智能手表中记录生命的律动,让…

挑战一个月基本掌握C++(第六天)了解函数,数字,数组,字符串

一 C函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上&#xff…

rust学习: 有用的命令

在学习rust的过程中, 发现一些有用的命令, 记录之. cargo subcommands cargo 子命令(cargo subcommands)是一种有用的机制, 可以对名为cargo-xxx的命令通过 cargo xxx来调用. cargo官方整理了一份cargo subcommands在这里: https://github.com/rust-lang/cargo/wiki/Third-p…

Kubernetes网络管理

Kubernetes 网络管理是 Kubernetes 集群中非常重要的一部分,它涉及到 Pod 之间的通信、服务发现、负载均衡以及与外部网络的连接。以下是 Kubernetes 网络管理的关键概念和组件: 1. Kubernetes 网络模型 Kubernetes 网络模型基于以下几个基本原则&…

【Nginx】基础

文章目录 代理正向代理反向代理 负载均衡Nginx安装Http反向代理负载均衡 代理 概念: 计算机中的一种概念,一般指代码设计方式,如AOP动态代理,或者物理层访问方式,如代理服务器 AOP的原理是动态代理,通过…

《Java编程入门官方教程》第八章练习答案

【练习8-1(CharQ.java、IQDemo.java)】创建队列接口 为在实际中了解接口的强大功能,下面看一个实际例子。在以前的章节中,使用过一个名为Queue的类,该类实现了一个简单的固定大小的字符队列。然而,有许多方法可以实现一个队列。例…