当前位置: 首页 > article >正文

JVM 参数

JVM 参数

一、JVM 是什么?
JVM(Java 虚拟机)是 Java 代码在执行时的虚拟处理器,负责负载均衡,垃圾回收,类装载和即时编译等。

二、为什么需要设置 JVM 参数?
通过设置 JVM 参数,可以优化代码的性能和稳定性。合理的设置 JVM 参数可以加速应用程序的执行速度,减小内存占用,以及优化垃圾回收效率等。

三、JVM 参数的分类:
1.基础参数:用于控制 Java 虚拟机的基本启动参数。
2.模式参数:用于选择不同的运行模式,可以显著的影响程序的执行。
3.GC 参数:用于控制垃圾回收流程的参数。
4.调试参数:用于协助诊断和调试 Java 代码的参数。
5.性能参数:用于调优程序性能和资源占用。

四、基础参数:
1.-Xms 和 -Xmx:设置 Java 虚拟机初始化堆内存的大小和最大堆内存的大小。

   java -Xms512m -Xmx1024m Test

1.-Xss:设置每个线程栈内存的大小。

   java -Xss256k Test

1.-XX:PermSize 和 -XX:MaxPermSize:设置方法区域的大小和最大大小。

   java -XX:PermSize=64m -XX:MaxPermSize=256m Test

五、模式参数:
1.-server:用于选择服务端模式,该模式会优化代码的执行速度和性能。

   java -server Test

1.-client:用于选择客户端模式,适用于图形化程序运行,该模式会优化代码的响应速度。

   java -client Test

六、GC 参数:
1.Serial GC:适用于单处理器和小内存的场景,实现简单,但是效率较低。

   java -XX:+UseSerialGC Test

1.Parallel GC:适用于多核处理器和大内存的场景,可以显著提升垃圾回收的效率。

 java -XX:+UseParallelGC Test

1.CMS GC:适用于交互式应用程序或者大规模多线程并发应用场景,能够快速响应用户请求。

  java -XX:+UseConcMarkSweepGC Test

1.G1 GC:适用于大内存和多核处理器的场景,实现了高效的垃圾回收机制。

   java -XX:+UseG1GC Test

七、调试参数:
1.-verbose:gc:用于输出垃圾回收的日志信息,方便诊断和调试。

   java -verbose:gc Test

1.-XX:+HeapDumpOnOutOfMemoryError:用于在程序发生内存溢出时,自动生成堆转储文件。

   java -XX:+HeapDumpOnOutOfMemoryError Test

1.-XX:ErrorFile=:用于设置错误日志输出文件的绝对路径。

   java -XX:ErrorFile=/usr/local/log/error.log Test

八、性能参数:
1.-XX:+TieredCompilation:用于启用多层次编译器,加速代码的执行速度。

   java -XX:+TieredCompilation Test

1.-XX:+UseCompressedOops:用于启用压缩指针技术,减小 Java 对象的大小,降低内存占用。

   java -XX:+UseCompressedOops Test

1.-XX:MaxInlineLevel=:用于设置方法内联策略的最大级别。

 java -XX:MaxInlineLevel=15 Test

1.-XX:MaxTenuringThreshold=:用于设置对象年龄的最大阈值。

   java -XX:MaxTenuringThreshold=5 Test

九、扩展点:
1.JVM 参数的添加和调整:可以通过编辑 JDK 安装目录下的 conf 文件夹下的 jvm.cfg 文件来添加和调整 JVM 的参数。
2.常用 JVM 参数的使用场景:在实际项目中,需要根据具体的业务场景来选择优化和设置 JVM 参数。

十、总结
通过合理的设置 JVM 参数,可以优化代码性能和稳定性,提升应用程序的执行效率。在实际开发中,需要根据具体的业务场景来选择和测试合适的 JVM 参数。


http://www.kler.cn/news/107019.html

相关文章:

  • 分治算法解决归并排序问题
  • 【ROS入门】雷达、摄像头及kinect信息仿真以及显示
  • 前端的基本介绍
  • 5.MySQL基本查询
  • 智慧垃圾站:AI视频智能识别技术助力智慧环保项目,以“智”替人强监管
  • MongoDB 的集群架构与设计
  • Angular-03:组件模板
  • 如何在 uniapp 里面使用 pinia 数据持久化 (pinia-plugin-persistedstate)
  • 关于路由转发
  • Mysql binlog日志功能使用,简单易懂
  • centos更改yum源
  • 2023大湾区杯粤港澳金融数学建模竞赛思路+模型+代码
  • 直方图均衡化算法
  • 最长公共子序列(LCS)与最长上升子序列(LIS)问题的相互转换
  • uni-app集成uni-simple-router,报错:Uncaught ReferenceError: ROUTES is not defined
  • element-plus form表单的二次封装
  • C++工程使用curl 静态库
  • 3DCAT+东风日产:共建线上个性化订车实时云渲染方案
  • k8s客户端配置
  • 2.22每日一题(含绝对值的定积分+极值+凹凸区间+单调区间)
  • 汽车托运如何获得赔偿
  • Flask 上传文件,requests通过接口上传文件
  • 考虑温度影响的vumat子程序在木材受火后强度分析中的应用
  • 2023了,是时候使用pnpm了!
  • Java实现SQL分页
  • 项目经验分享|openGauss 陈贤文:受益于开源,回馈于开源
  • 77 全排列
  • iOS开发-CoreNFC实现NFC标签Tag读取功能
  • HAproxy负载均衡集群
  • 无人监测站相关配置