Java JVM(Java虚拟机)启动参数的设置

news/2024/10/20 20:54:18/

Java JVM(Java虚拟机)启动参数的设置对于优化Java应用程序的性能至关重要。这些参数可以分为标准参数、非标准参数(也称为-X参数)和非Stable参数(以-XX为前缀)。以下是一些常用的JVM启动参数设置:

一、标准参数

  1. -verbose:gc
    • 输出虚拟机中垃圾收集(GC)的详细情况。
  2. -verbose:class
    • 输出JVM载入类的相关信息,当JVM报告找不到类或类冲突时,可用于诊断。

二、非标准参数(-X)

  1. -Xms<size>
    • 设置JVM启动时的初始堆内存大小。例如,-Xms512m表示设置JVM堆内存初始值为512MB。
  2. -Xmx<size>
    • 设置JVM可使用的最大堆内存大小。例如,-Xmx1024m表示设置JVM堆内存最大可用内存为1024MB。为了避免JVM内存自动扩展,建议将-Xmx和-Xms设置为相同的值。
  3. -Xmn<size>
    • 设置年轻代(Young Generation)的大小。例如,-Xmn200m表示设置年轻代大小为200MB。年轻代用于存放新生成的对象,其大小对系统性能有较大影响。
  4. -Xss<size>
    • 设置每个线程的堆栈大小。例如,-Xss128k表示设置每个线程的堆栈大小为128KB。根据应用的线程所需内存大小进行调整。

三、非Stable参数(-XX)

  1. -XX:+UseSerialGC
    • 启用串行垃圾收集器。这是JVM的默认GC方式,一般适用于小型应用和单处理器。
  2. -XX:+UseParallelGC
    • 启用并行垃圾收集器。并行GC在GC运行时,对应用程序运行没有影响,可以最大限度不影响app的运行。
  3. -XX:+UseConcMarkSweepGC
    • 启用并发标记交换算法进行GC。适用于多处理器系统,可以提高GC的效率,但算法复杂,系统消耗较大。
  4. -XX:NewRatio=<int>
    • 设置年轻代(Young Generation)与老年代(Old Generation)的比例。例如,-XX:NewRatio=3表示年轻代与老年代的比例为1:3。
  5. -XX:SurvivorRatio=<int>
    • 设置Eden区与Survivor区的大小比例。例如,-XX:SurvivorRatio=8表示Eden区与Survivor区的比例为8:1。
  6. -XX:MaxPermSize=<size>
    • 设置永久代(PermGen space,在Java 8中已被元空间Metaspace替代)的最大值。例如,-XX:MaxPermSize=256m。但请注意,在Java 8及更高版本中,应使用-XX:MaxMetaspaceSize来设置元空间的最大值。
  7. -XX:+HeapDumpOnOutOfMemoryError
    • 当堆内存空间溢出时,输出堆的内存快照。
  8. -XX:HeapDumpPath=<path>
    • 指定堆内存快照的输出路径。
  9. -XX:+PrintGC
    • 每次GC时打印相关信息。
  10. -XX:+PrintGCDetails
    • 每次GC时打印详细信息,包括各个区的情况。
  11. -Xloggc:<file-path>
    • 指定GC日志的输出路径。例如,-Xloggc:/data/logs/gc.log
  12. -XX:NumberOfGCLogFiles=<int>
    • 设置GC日志文件的滚动个数。
  13. -XX:GCLogFileSize=<size>
    • 设置每个GC日志文件的大小。

四、其他常用参数

  1. -D<name>=<value>
    • 设置系统属性。例如,-Dspring.profiles.active=prd用于设置Spring框架的活动配置文件。
  2. -server
    • 设置JVM使用server模式。该模式下,JVM的启动速度较慢,但运行时性能和内存管理效率更高,适用于生产环境。
  3. -Xbootclasspath:<path>
    • 指定JVM加载但不想通过校验的类路径。
  4. -Xdebug
    • JVM调试参数,用于调试。例如,在Tomcat中设置远程调试时,可以使用-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

请注意,不同的JVM实现(如Oracle JDK、OpenJDK等)可能对某些参数的支持有所不同,且随着JVM版本的更新,某些参数可能会被弃用或引入新的参数。因此,在设置JVM参数时,建议查阅当前JVM版本的官方文档以获取最准确的信息。


http://www.ppmy.cn/news/1538704.html

相关文章

element-plus 自定义列表(非table)实现分页功能

自定义列表实现分页功能增&#xff0c;删&#xff0c;改功能点击图片放大功能 template模块代码如下&#xff1a; <template> <div class"booth_manager"> <el-affix :offset"0"> <div class"sticky_top"> <div clas…

探索深度学习的奥秘:从理论到实践的奇幻之旅

目录 引言&#xff1a;穿越智能的迷雾 一、深度学习的奇幻起源&#xff1a;从感知机到神经网络 1.1 感知机的启蒙 1.2 神经网络的诞生与演进 1.3 深度学习的崛起 二、深度学习的核心魔法&#xff1a;神经网络架构 2.1 前馈神经网络&#xff08;Feedforward Neural Netwo…

Informer: Beyond Efficient Transformer for Long SequenceTime-Series Forecasting

博客贡献人 谷雨 作者 Haoyi Zhou, Shanghang Zhang, Jieqi Peng, Shuai Zhang, Jianxin Li, Hui Xiong, Wancai Zhang 标签 时序预测&#xff0c;Transformer&#xff0c;自注意力蒸馏 摘要 许多实际应用需要预测长序列时间序列&#xff0c;例如用电量规划。长序列时间…

【QT Quick】C++交互:与QML类型转换

在本节课中&#xff0c;我们将讨论C与QML之间的数据类型转换。这种转换非常重要&#xff0c;因为在许多应用程序中&#xff0c;C生成的数据需要传递给QML&#xff0c;同时QML中的数据也需要被C访问和处理。我们将重点关注基本数据类型、数组类型和对象&#xff08;map&#xff…

Ubuntu 启动引导如何修复(直接进入grub怎么办)

如果 Ubuntu 系统启动时直接进入 GRUB 界面&#xff0c;而不是直接启动操作系统&#xff0c;原因是&#xff1a; GRUB 配置文件丢失或损坏 解决方法 一、手动引导系统&#xff08;临时方案&#xff09; GRUB 的配置文件&#xff08;/boot/grub/grub.cfg&#xff09;损坏。通…

uni-app 打包成app时 限制web-view大小

今天对接一个uni-app的app 内置对方h5 web-view的形式 需要对方在web-view顶部加点东西 对方打的app的web-view始终是全屏的状态&#xff0c;对方表示做不到我要的效果 emmmmmm。。。。。。 于是乎 自己搭了个demo 本地h5跑起来审查了下代码&#xff0c;发现web-view是给绝对定…

MySQL 之锁机制

在 MySQL 数据库中&#xff0c;锁机制是保证数据一致性和并发控制的重要手段。不同类型的锁在不同的场景下发挥着关键作用&#xff0c;下面将详细解释 MySQL 中的行锁、GAP 锁&#xff08;间隙锁&#xff09;、临键锁的作用和实现原理。 一、行锁 作用&#xff1a; 行锁是对数…

大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…