【JVM的相关参数和调优】

news2024/9/30 17:34:28

文章目录

  • JVM 调优的参数类型
    • 一、标配参数
    • 二、X参数
    • 三、XX参数
  • JVM 调优的常用参数


JVM 调优的参数类型

一、标配参数

这类此参数在jdk的各个版本之间很少会变化,基本不改变

  1. java -version,查看当前电脑上的jdk的版本信息

在这里插入图片描述

  1. java -help,查看java命令的各种选项和参数

在这里插入图片描述

  1. java -showversion,相当于上述两者结合

在这里插入图片描述
4. jps,查看后台运行的 java 进程

public class Test {
    public static void main(String[] args) throws InterruptedException {
    	// 让该程序一致在后台
        Thread.sleep(Integer.MAX_VALUE);
    }
}

在这里插入图片描述
Test 的进程 id 为 29636

5. jinfo,通过进程 id 查看正在运行的 java 程序的参数信息

jinfo -flag 具体参数(XX参数) java进程编号(-flag,是一个进程号同时指定要查看的一个参数)
在这里插入图片描述
jinfo -flags java进程编号(-flags,是一个进程号所有的参数)
在这里插入图片描述


二、X参数

  1. java -Xint -vesion,解释执行模式

解释执行命令会告诉java虚拟机使用解释执行模式来执行程序。在解释执行模式下,Java程序的代码将逐行被解释器翻译成机器指令并执行。这种模式通常会导致程序执行速度较慢,但它可以在不同的平台上运行代码,因为不需要事先将代码编译成机器代码。

  1. java -Xcomp -version,第一次使用就编译成本地代码

编译执行命令会告诉java虚拟机在第一次执行程序时将代码编译成本地机器代码。这种模式下,Java程序的代码会被即时编译器翻译成机器指令,并保存下来以备下次执行使用。这样,在后续执行时,程序的执行速度会比解释执行模式下更快,因为代码已经被编译成机器代码。

  1. java - Xmixed -version,混合模式(JVM默认采用的模式)

混合模式命令会告诉java虚拟机在运行时根据程序的运行情况来选择解释执行或即时编译执行。在混合模式下,虚拟机会根据代码的热度来判断是否将其编译成机器代码。热度通常是通过代码的执行频率衡量的。因此,混合模式可以充分利用即时编译的性能优势,同时又能适应代码的动态性。

在这里插入图片描述


三、XX参数

1. Boolean 类型
公式:–XX:+或-某个属性(+表示开启,-表示关闭)
例如:-XX:+PrintGCDetails

2. K/V键值对类型

公式:-XX:某个Key=Value
例如:
-XX:MetaspaceSize=128m
-XX:MaxTenuringThreshold=15

K/V 类型中常常会有许多的简写形式
如:-Xms 等价于 -XX:InitialHeapSize=,. -Xmx 等价于 -XX:MaxHeapSize=


JVM 调优的常用参数

1. -Xms 等价于 -XX:InitialHeapSize=,初始大小内存,默认为物理内存的 1/ 64

2. -Xmx 等价于 -XX:MaxHeapSize=,最大分配内存,默认为物理内存的1 / 4

3. -Xss 等价于 -XX:ThreadStackSize=,设置单个线程栈的大小,一般默认为 512K~1024K(具体跟JVM所在的平台有关)

在这里插入图片描述

Window下 ThreadStackSize=0, 意思是使用的是默认值

4. -Xmn,设置年轻代的大小(只有简写,没有全称)

5. -XX:MetaspaceSize,设置元空间大小(元空间并不在虚拟机中,而是使用本地内存,因此会受本地内存大小的限制,OOM异常中就有java.lang.OutOfMemoryError: Metaspace)

6. -XX:+PrintGCDetails,输出GC收集日志的详细信息

在这里插入图片描述

GC 和 Full GC
在这里插入图片描述

7. -XX:SurvivorRatio,设置Survivo所占的比例,但总的新生代大小不变
Eden:S0:s1 = 8 : 1 : 1,即默认-XX:SurvivorRatio=8
Eden:S0:s1 = 4 : 1 : 1,即设置-XX:SurvivorRatio=4

8. -XX:NewRatio,配置新生代和老年代的比例
默认:-XX:NewRatio=2,新生代:老年代=1:2,新生代占整个堆的 1/3
假如:-XX:NewRatio=4,新生代:老年代=1:4,新生代占整个堆的 1/5

9. -XX:MaxTenuringThreshold,设置年轻代对象的最大年龄(即在Survivor中的复制轮数),超过这个次数要么进入老年代要么回收,范围[0, 15]

默认值为 15

在这里插入图片描述

10. -XX:+PrintFlagsInitial(查看 JVM 的默认配置,即 XX:K/V) 和 -XX:+PrintFlagsFinal(查看JVM当前的配置)

K = V,没有被修改过
K := V,被修改过

在这里插入图片描述

12. -XX:+PrintCommandLineFlags -version(查看默认的垃圾回收器的方式)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1378709.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Typora上传图片失败PicGo

起初我是在Typora中点击一键上传图片,结果如下,报错。可是我找了半天也没错啊。 最后发现原来是一个图片的命名问题,名字太过于复杂,PicGo识别不出,一个图片报错导致其它也上传不了。 我把它复制到其它文件夹之后&…

Jetson_yolov8_解决模型导出.engine遇到的问题、使用gpu版本的torch和torchvision、INT8 FP16量化加快推理

1、前情提要 英伟达Jetson搭建Yolov8环境过程中遇到的各种报错解决(涉及numpy、scipy、torchvision等)以及直观体验使用Yolov8目标检测的过程(CLI命令行操作、无需代码)-CSDN博客和YOLOv8_测试yolov8n.pt,yolov8m.pt训…

Qt实现复杂列表

Qt实现复杂列表 界面效果layeritemdelegate.hlayeritemdelegate.cpplayertablemodel.hlayertablemodel.cpplayertableview.hlayertableview.cppmainwindow.hmainwindow.cpp 界面效果 layeritemdelegate.h #ifndef LAYERITEMDELEGATE_H #define LAYERITEMDELEGATE_H#include &l…

【python】搭配Miniconda使用VSCode

现在的spyder总是运行出错,启动不了,尝试使用VSCode。 一、在VSCode中使用Miniconda管理的Python环境,可以按照以下步骤进行: a. 确保Miniconda环境已经安装并且正确配置。 b. 打开VSCode,安装Python扩展。 打开VS…

InternLM第3次课作业

部署 参考github教程:https://github.com/InternLM/tutorial/tree/main/langchain 问题1: windows端口映射过程命令 ssh -i C:\\Users\\breat/.ssh/id_rsa.pub -CNg -L 7860:127.0.0.1:7860 rootssh.intern-ai.org.cn -p 3 4145 中,提示找不…

MetaGPT前期准备与快速上手

大家好,MetaGPT 是基于大型语言模型(LLMs)的多智能体协作框架,GitHub star数量已经达到31.3k。 接下来我们聊一下快速上手 这里写目录标题 一、环境搭建1.python 环境2. MetaGpt 下载 二、MetaGPT配置1.调用 ChatGPT API 服务2.简…

Unity对应SDK和NDK版本的对照表

官网:Unity - Manual: Android environment setup 本人安装的是2022版本长期支持版本2022.3.15f1c1 安装Java的JDK环境就不在这里展开了,就记录下对Android SDK的设置,要与Unity的版本对应,否则会出现很多莫名奇妙的问题。 打开…

电子学会C/C++编程等级考试2020年12月(三级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:完美立方 形如 a^3= b^3 + c^3 + d^3的等式被称为完美立方等式。例如 12^3= 6^3 + 8^3 + 10^3 。 编写一个程序,对任给的正整数 N (N≤100),寻找所有的四元组 (a, b, c, d),使得 a^3= b^3 + c^3 + d^3 ,其中 a,b,c,d均大于 11, …

【Jmeter之get请求传递的值为JSON体实践】

Jmeter之get请求传递的值为JSON体实践 get请求的常见传参方式 1、在URL地址后面拼接,有多个key和value时,用&链接 2、在Parameters里面加上key和value 第一次遇到value的值不是字符串也不是整型,我尝试把json放到value里面&#xff0…

java多线程面试(二)

1.说一下你对java内存模型JVM的理解 java内存模型是一种抽象的模型,被定义出来屏蔽各种硬件和操作系统的访问差异。 JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存 (Main Memory)中,每个线程…

SQL语句详解二-DDL(数据定义语言)

文章目录 操作数据库创建:Create查询:Retrieve修改:Update删除:Delete使用数据库 操作表常见的几种数据类型创建:Create复制表 查询:Retrieve修改:Update删除:Delete 操作数据库 创…

Spring Cloud配置中心

微服务意味着要将单体应用中的业务拆分成一个个子服务 , 每个服务的粒度相对较小 ,因此系统中会出现大量的服务。 由于每个服务都需要必要的配置信息才能运行 , 所以一套集中式的 , 动态的配置管理设施是必不可少的。 Spring Cloud 提供了 ConfigServer 来解决这个问题 . Sp…

客户端请求服务器的步骤

当我们在浏览器地址栏输入’http://www.xxx.com/api/xxx"时,客户端是如何找到服务器并发送请求的? 1.先找到服务器 a.检测浏览器缓存有没有缓存该域名对应的IP地址,有则通过IP地址取找服务器。 b.检测本地的hosts文件,是否有…

ROS2——launcher

在ROS2中,launcher 文件是通过Python构建的,它们的功能是声明用哪些选项或参数来执行哪些程序,可以通过 launcher 文件快速同时启动多个节点。一个 launcher 文件内可以引用另一个 launcher 文件。 使用 launcher 文件 ros2 launch 可以代替…

STM32 SPI通信协议3——读取MAX6675温度传感器

在上两章中,我们已经配置了相应的GPIO和SPI功能。这里说一下MAX6675如何读取温度。 从MAX6675手册中我们可以看到,当0的时候SCK启动,数据线开始发送信息,此时可以读取数据,当数据读完后,再拉高电平停止发送…

VMware Workstation17安装教程及安装Ubuntu22.04系统

编程如画,我是panda! 前言 VMware Workstation Pro 是一款高级虚拟化软件,使用户能够在单一计算机上同时运行多个操作系统,如Windows、Linux和macOS,而无需重新启动。具备虚拟机快照、高级网络配置、克隆和复制功能&a…

Redis-浅谈redis.conf配置文件

Redis.conf Redis.conf是Redis的配置文件,它包含了一系列用于配置Redis服务器行为和功能的选项。 以下是Redis.conf中常见的一些选项配置: bind: 指定Redis服务器监听的IP地址,默认为127.0.0.1,表示只能本地访问,可以…

大数据毕业设计:房屋数据分析可视化系统 预测算法 可视化 商品房数据 Flask框架(源码+讲解视频)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

网卡高级设置-提高网络环境

网卡高级设置,提高网络质量排除一些连接问题 一、有线网卡 1、关闭IPv6; 可以关闭协议版本6,因为它会引起一些网络连接问题,而且现在几乎用不到IP6。 2、关闭节约电源模式; 右击计算机->设备->设备管理器-&…

Unity游戏开发面试知识点全解读

Unity游戏开发面试知识点全解读 在数字化世界中,Unity游戏开发不仅是一种艺术形式和商业活动,而且已成为推动整个数字娱乐产业创新和进步的重要力量。Unity以其易用性、高效性和灵活性,赢得了全球开发者的青睐,从独立开发者到大型…