JVM参数调优

JVM 21 的优化指南:如何进行JVM调优,JVM调优参数有哪些 这篇文章将详细介绍如何进行JVM 21调优,包括JVM 21调优参数及其应用。此外,我将提供12个实用的代码示例,每个示例都会结合和Java代码。本文已收录于,我的技术网站,有大厂完整,工作技术,架构师成长之路,等经验分享随着JVM版本的不断更新,JVM 21 在性能和功能上都带来了显著的提升。合理的JVM调优不仅可以提高应用程序的性能,还能显著减少内存消耗和GC(垃圾回收)停顿时间。本文将详细介绍JVM 21 的优化指南,包含如何进行JVM调优以及常见的JVM调优参数,并提供3个实用的代码示例。 阅读详情

JVM参数调优

JVM参数配置

JVM提供了诸多的参数进行JVM各个方面内存大小的设置,为Java应用进行优化提供了诸多的工具,本文将会详细分析各个参数的功能与使用。

常见参数配置

-XX:+PrintGC      每次触发GC的时候打印相关日志

-XX:+UseSerialGC      串行回收

-XX:+PrintGCDetails  更详细的GC日志

-Xms               堆初始值

-Xmx               堆最大可用值

-Xmn               新生代堆最大可用值

-XX:SurvivorRatio  用来设置新生代中eden空间和from/to空间的比例.

-XX:NewRatio       配置新生代与老年代占比 1:2

含以-XX:SurvivorRatio=eden/from=den/to

总结:在实际工作中,我们可以直接将初始的堆大小与最大堆大小相等,

这样的好处是可以减少程序运行时垃圾回收次数,从而提高效率。

-XX:SurvivorRatio     用来设置新生代中eden空间和from/to空间的比例.

 

初始队内存 与 电脑内存有关 默认4G  

新生代最大可用值  满了发生Minor GC

Full GC 新生代 老年代 都会一起回收了

 

堆的初始值和最大值一定要相等,不相等的情况下 垃圾回收不停的回收 不停的申请 不停的回收  

 1、垃圾回收时候 其他线程要停止 停顿一下  如果堆内存和最大不同  不停回收 那么程序断断续续的进行 非常不好 大家要注意    

如果不暂停 再次期间产生的新的垃圾不能回收

2、 新生代小于老年代   新生代回收的频率高 老年代低  让新生代去频繁收集 所以调小一些     新生代:老年代=1:2  新生代占比越小越频繁 老年代打不频繁

 

废话不多说!实践!

实战一、堆内存大小配置

package jvmTest;

//打印堆的基本内存信息
public class Test02 {
  public static void main(String[] args) {
        System.out.print("最大内存");
        System.out.println(Runtime.getRuntime().maxMemory() / 1024.0 / 1024 + "M");
        System.out.print("可用内存");
        System.out.println(Runtime.getRuntime().freeMemory() / 1024.0 / 1024 + "M");
        System.out.print("已经使用内存");
        System.out.println(Runtime.getRuntime().totalMemory() / 1024.0 / 1024 + "M");
}
        
}

这是默认的堆存的状态

 进行设置: -Xmx20m -Xms5m     初始5m 最大20m

  

运行结果:

已使用内存 根据初始值申请来的  !

来4M的内存看看:

package jvmTest;

//打印堆的基本内存信息
public class Test02 {
  public static void main(String[] args) {
        byte[] b = new byte[4 * 1024 * 1024];  //4M
        System.out.print("最大内存");
        System.out.println(Runtime.getRuntime().maxMemory() / 1024.0 / 1024 + "M");
        System.out.print("可用内存");
        System.out.println(Runtime.getRuntime().freeMemory() / 1024.0 / 1024 + "M");
        System.out.print("已经使用内存");
        System.out.println(Runtime.getRuntime().totalMemory() / 1024.0 / 1024 + "M");
}
        
}

运行结果:

使用内存 > 9M

但是不能申请25M给它哦,会堆溢出的~大家可以试试

 

 

 

设置新生代比例参数

使用示例: -Xms20m   -Xmx20m  -Xmn1m  -XX:SurvivorRatio=2  -XX:+PrintGCDetails -XX:+UseSerialGC

说明:堆内存初始化值20m,堆内存最大值20m,新生代最大值可用1m,eden空间和from/to空间的比例为2/1     (2:1:1)

 Eden 默认 比S0、S0要打 因为S0、S1要复制的 不要太大了

package jvmTest;

//打印堆的基本内存信息
public class Test02 {
  public static void main(String[] args) {
      System.out.println("ssssss");
      byte[] b = null;
      for (int i = 0; i < 10; i++) {
      b = new byte[1 * 1024 * 1024];
      }

 }
  }    

结果:

出现框框内的 说明内存不够 进行垃圾回收了

下面的分配:

配置新生代的

 eden空间和from/to空间的比例为2/1   2:1:1   结果展示完美~~

 

下面这么配置一下看看:

 -XX:+PrintGCDetails -XX:+UseSerialGC

 

结果没有回收哦

最大始值设置20M时候会有 GC回收日志

  因为之前这段代码运行时候 需要的内存是 10M i=10嘛  但是这时候新生代最大可用值是1M   这时候空间不够 为了够用 不停的回收   内存不够了就会不停的回收 

 

 

设置新生代与老年代比例参数

使用示例: -Xms20m -Xmx20m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC -XX:NewRatio=2

说明:堆内存初始化值20m,堆内存最大值20m,新生代最大值可用1m,eden空间和from/to空间的比例为2/1

新生代和老年代的占比为1/2

哇,竟然回收了三次!

 

新生代与老年的的占比是 1:2 看到eden+from+to : 1369 大致是哦

当然我们可以看下默认占比

大致为:13696:6784=1:2 

JVM 11 的优化指南:如何进行JVM调优,JVM调优参数有哪些 在实际的Java应用开发中,JVM(Java Virtual Machine)调优是提升应用性能的关键步骤。合理的调优可以显著提升应用的响应速度、吞吐量,并且减少内存消耗和GC(Garbage Collection)停顿时间。本文将详细介绍JVM 11的优化指南,包含如何进行JVM调优以及常见的JVM调优参数,并提供3个实用的代码示例。 阅读详情

相关推荐

【JVM】JVM常用性能调优参数详细介绍

但是需要注意的是,JVM参数调优是一个复杂的过程,需要根据具体应用程序的情况进行调整,而且需要进行实验和测试,才能确定最佳的参数设置。一般是从满足程序的内存使用需求开始的,之后是时间延迟的要求,最后才是吞吐量的要求,要基于这个步骤来不断优化,每一个步骤都是进行下一步的基础,不可逆行之。JVM提供了大量的参数配置,可以通过配置这些参数对JVM进行调优、记录GC日志等等,本文只列出了我自己用到过和了解过的部分参数,根据功能划分。架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。

No8g攻城狮的博客 1524

深入理解JVM(二)JVM运行时数据区域

JVM 整体架构 JVM总体由三部分组成:类装载子系统、运行时数据区域、字节码执行引擎。 Math.java文件经Javac 编译成字节码文件Math.class 字节码文件类经类装载子系统加载到运行时数据区再由字节码执行引擎执行。 运行时数据区域包括 1. 程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,可以看成当前线程所执行字节码的行号指示器。字节码解释器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转异常处理、线程恢

JohnnyLin 505

MATLAB实战:蓝牙GFSK调制解调全流程解析(附误码率优化技巧)

本文深入解析了蓝牙GFSK调制解调在MATLAB中的全流程实现,包括高斯滤波器设计、调制解调技术及误码率优化技巧。通过实战案例和代码示例,帮助工程师提升蓝牙通信系统的性能表现,特别是在降低误码率方面的有效方法。

weixin_29046035的博客 277

jvm常用调优策略

jvm参数类型: (了解 不常用) -xint:解释执行 -Xcomp:编译执行 -Xmixed:混合模式,jvm自己决定使用哪种方式 (重点) 分为boolean类型: -XX:[+-]&lt;name&gt; 表示是否启用jvm的某个参数 非boolean类型: -XX:&lt;name&gt; = &lt;value&gt; 表示name属性的值为value -Xms:初始对内存大小(...

LC_HYQ的博客 1194

【simulink模型】独立悬架振动模型,七自由度整车simulink模型

车辆悬架系统的设计对提升车辆行驶平顺性和操纵稳定性具有重要意义。本文构建了独立悬架的振动仿真模型以及七自由度整车动力学模型,基于 Simulink 平台实现对模型的动态响应仿真。通过对比不同工况下的车辆振动响应,验证了模型的准确性与实用性。研究结果为车辆悬架系统的优化设计提供了有力支持。

2401_84610415的博客 1584

iOS WKWebView H5微信支付跳转

iOS WKWebView H5微信支付跳转 需求:iOS客户端实现嵌入H5进行微信支付跳转到微信客户端,支付完成后再跳转回我们的APP,解决WKWebView无法跳转回APP的BUG. 阅读前提: 了解WKWebView基本初始化及使用 了解如何利用URL Schemes进行应用间跳转 公司或个人已经在微信后台注册了一级域名 GitHub地址(附代码) :iOS WKWebView H5微信支付跳转 简书地址 :iOS WKWebView H5微信支付跳转 博客地址 :iOS WKWe...

ForeverMyheart的博客 2046

java 性能问题定位

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34292959的博客 413

Windows下飞桨PaddlePaddle 2.6.1 GPU版环境搭建全攻略(含CUDA 11.7配置避坑指南)

本文详细介绍了在Windows系统下搭建飞桨PaddlePaddle 2.6.1 GPU版环境的完整流程,特别针对CUDA 11.7和cuDNN的安装提供了避坑指南。从Anaconda环境配置、CUDA Toolkit安装到飞桨GPU版的验证,手把手帮助开发者高效完成深度学习环境搭建,解决常见问题并优化性能。

x8y9z0的博客 1095

【性能】【art】编译优化总结

dexopt

weixin_41572402的博客 5273

【STK】手把手教你利用STK进行光电红外仿真04-STK/EOIR模块的实战操作1航天器星载相机对LEO卫星成像

今天引入一个实际的场景,帮助大家完成对于这个模块的理解与运用。

weixin_44184852的博客 2417

FFmpeg 开发(01):FFmpeg 编译和集成

尽管 FFmpeg 功能强大,但是由于其采用的是带有传染性的 LGPL/GPL 开源协议,所以一些大厂基本上都是自己独立开发类似的音视频处理库,甚至在接口和组织模块上模仿 FFmpeg 。

字节流动 1万+

2024年Android性能调优之需要掌握Dalvik和ART的知识,面试加分句

现在随着短视频,抖音,快手的流行NDK模块开发也显得越发重要,需要这块人才的企业也越来越多,随之学习这块的人也变多了,音视频的开发,往往是比较难的,而这个比较难的技术就是NDK里面的技术。音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以AndroidNDK技术已经是我们必备技能了。

2401_84544914的博客 935

GMSL转eDP芯片MAX9686X(ADI)

MAX96860/MAX96862/MAX96864解串器可以把单路或双路GMSL转换成eDP V1.4a,支持820MHzPCLK的无压缩的24bpp(每个像素的位数)视频,或660MHz的30bpp视频。芯片的GMSL支持NRZ编码的6Gbps/187Mbps的GMSL2,PAM4编码的12Gbps/187Mbps的GMSL3。同时支持单线(COAX模式)双向全双工传输控制数据和video数据。支持DSC压缩的芯片,最大支持像素时钟1080MHz@24bpp或者864MHz@30bpp,传输方式包括同轴

qflook的博客 2846

JVM常用调优参数 ——JVM篇

JVM常用性能调优参数详解 ​ 在学习完整个JVM内容后,其实目标不仅是学习了解整个JVM的基础知识,而是为了进行JVM性能调优做准备,所以以下的内容就是来说说JVM性能调优的知识。 一、性能调优 ​ 性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等等。 ​ 架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。 性能调优基本上按照以下步骤进行: 明确优化目标 发现性能瓶颈 性能调优 通过监控及数据统计工具获得数据 确认是否达到目标 二、何时进

YING—country的博客 2万+

文末含资料链接和视频讲解!YOLOv8集成CoordAtt注意力机制详细教程

本文详细介绍了如何在YOLOv8目标检测框架中集成CoordAtt注意力机制。首先解析了CoordAtt的工作原理,它通过分解式池化将位置信息嵌入到通道注意力中,相比传统注意力机制具有更好的空间信息保持能力。然后提供了PyTorch实现代码解析,包括自适应平均池化、Hard-Swish激活函数等关键实现细节。最后概述了YOLOv8架构,为后续集成CoordAtt提供基础。该教程适合具备深度学习基础的开发者,将理论与实践结合,帮助读者掌握这一目标检测优化技术。

FJN110的博客 266

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

JVM调优参数

JVM调优参数配置方式内存参数合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 JVM调优参数 配置方式 java [options] MainClass [arguments] options - JVM启动参数。 配置多个参数的.

360°顺滑 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【JVM调优及常见的JVM调优参数以及作用】

以上是一些常用的JVM优化配置参数和示例代码,具体的配置参数和代码可以根据实际需求进行调整。以上仅是一些常见的JVM调优参数,实际调优时需要根据具体情况选择合适的参数进行调整。主要是调整垃圾收集器的类型和相关参数,以提高垃圾回收的效率和吞吐量。主要是调整堆内存的大小以及堆的垃圾回收策略,以提高内存的使用效率。主要是调整线程池的大小以及一些与线程相关的参数,以提高并发性能。主要是调整类加载器的相关参数,以提高类加载的效率和性能。

qq_31532979的贺公子之数据科学与艺术博客,致力于科技向善,拥抱开源,要用技术的影响力来领导团队,而不是威权和职位! 1622

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【JVM实战】JVM参数调优

文章目录JVM参数调优一、调优基本概念二、常用JVM参数三、GC调优思路 JVM参数调优 一、调优基本概念 在调整性能时,JM有三个组件 堆大小调整 垃圾收集器调整 JIT编译器调整 大多数调优选项都与调整堆大小和选择的垃圾收集器有关。 同样,JIT编译器对性能也有很大影响,但是这个对程序员自身要求非常高。 通常,在调优Java应用程序时,重点是以下两个主要目标之一: 响应性:应用程序或系统...

明月沉江春雾晓 8218

JAVA8调优指南:如何进行JVM调优、JVM参数

JAVA8调优

升仔聊编程的博客 2085

JVM调优参数大全及G1GC调优

一、JVM常见参数 1、标准参数 -verbose:class 打印每个class信息 -verbose:gc 打印每次gc信息 2、非标参数 -X -Xloggc:filename 设置GC log文件的位置 -Xloggc:log/gc.log -Xms大小 设置堆的初始化大小 -Xmx2048m =-XX:InitialHeapSize -Xmx大小 设置堆的最大大小 -Xms1024m =-XX:MaxHeapSize 一般Xms=Xmx,防止扩容和缩容 -Xmn大小 设置年轻代大小(初始化和最大

叭嘣的博客 3万+

JVM 8 调优指南:如何进行JVM调优,JVM调优参数

JVM调优是指通过调整Java虚拟机的配置来提升Java应用程序的性能。这包括优化堆内存设置、选择合适的垃圾收集器以及调整其他性能相关的参数。通过这些示例,我们可以深入了解JVM 8的调优策略和方法。合理使用JVM调优参数,可以帮助您的Java应用实现更高效、稳定的性能。希望这些示例能帮助您在实际工作中更有效地进行JVM调优。本文已收录于,我的技术网站ddkk.com,有大厂完整面经,工作技术,架构师成长之路,等经验分享。

架构师专栏 1670

JVM性能调优的6大步骤,及关键调优参数详解

JVM性能调优的6大步骤,及关键调优参数详解JVM性能调优方法和步骤1.监控GC的状态2.生成堆的dump文件3.分析dump文件4.分析结果,判断是否需要优化5.调整GC类型和内存分配6.不断分析和调整JVM调优参数参考 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC 会对整个堆进行整理,包括Young、Tenured和Perm。Full GC因...

u013030086的博客 1万+

JVM性能调优2:JVM性能调优参数整理

整理的基于jdk 1.6 jvm参数。

rodesad的博客 8400
上一篇: 垃圾收集算法
下一篇: 内存溢出问题解决
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值