当前位置:首页 > 科技  > 软件

JVM的调优常用参数

来源: 责编: 时间:2023-11-10 17:07:41 189观看
导读调优目的JVM调优的目的是为了提高Java应用程序的性能和稳定性。通过优化JVM的配置和参数设置,可以减少内存占用、提高垃圾回收效率、优化线程管理等,从而提升应用程序的响应速度、降低内存泄漏的风险,并且减少应用程序的

调优目的

JVM调优的目的是为了提高Java应用程序的性能和稳定性。通过优化JVM的配置和参数设置,可以减少内存占用、提高垃圾回收效率、优化线程管理等,从而提升应用程序的响应速度、降低内存泄漏的风险,并且减少应用程序的崩溃和停顿现象。调优可以根据具体的应用场景和需求进行,以达到最佳的性能和稳定性。lCV28资讯网——每日最新资讯28at.com

lCV28资讯网——每日最新资讯28at.com

常见的一些行为方法:lCV28资讯网——每日最新资讯28at.com

  • 调整堆内存大小:通过调整-Xmx和-Xms参数来设置堆内存的最大和初始大小。合理地设置堆内存大小可以避免内存溢出和频繁的垃圾回收。
  • 调整垃圾回收器:JVM提供了多种垃圾回收器,如Serial、Parallel、CMS和G1等。根据应用程序的特点和需求,选择合适的垃圾回收器,并通过调整相关参数来优化垃圾回收性能。
  • 优化对象的创建和销毁:避免频繁创建和销毁大量的临时对象,可以减少垃圾回收的压力。可以使用对象池、缓存等技术来重用对象,提高性能。
  • 减少同步操作:过多的同步操作会导致线程竞争和阻塞,影响性能。可以使用无锁数据结构、并发集合类等技术来减少同步操作,提高并发性能。
  • 使用合适的数据结构和算法:选择合适的数据结构和算法可以提高程序的效率。例如,使用HashMap代替Hashtable、使用StringBuilder代替StringBuffer等。
  • 监控和分析JVM性能:使用JVM自带的工具(如jstat、jmap、jstack等)或第三方工具(如VisualVM、JProfiler等)来监控和分析JVM的性能瓶颈,找出优化的方向。

GC事件

JVM的垃圾回收GC事件可以分为以下几类:lCV28资讯网——每日最新资讯28at.com

  • Minor GC(新生代GC):针对新生代(Young Generation)的垃圾回收事件。在新生代中,通常采用复制算法进行垃圾回收,将存活的对象复制到另一个区域,同时回收无用的对象。Minor GC通常发生频率较高,但回收的对象数量较少。当JVM无法为新对象分配内存空间时总会触发Minor GC)
  • Major GC(老年代GC):针对老年代(Old Generation)的垃圾回收事件。在老年代中,通常采用标记-清除-整理算法进行垃圾回收,首先标记出存活的对象,然后清除无用的对象,最后进行内存整理。Major GC通常发生频率较低,但回收的对象数量较多。
  • Full GC(全局GC):对整个堆内存进行垃圾回收的事件。Full GC包括对新生代和老年代的垃圾回收,通常发生在新生代和老年代都满了的情况下,或者由于系统调用触发。Full GC的开销较大,会导致应用程序的停顿时间较长。
  • Concurrent GC(并发GC):在应用程序运行的同时进行垃圾回收的事件。并发GC的目标是尽量减少应用程序的停顿时间,通过与应用程序并发执行,提高系统的吞吐量。常见的并发GC算法有CMS(Concurrent Mark Sweep)和G1(Garbage First)。

常用参数总结

(1) 堆内存调优参数:lCV28资讯网——每日最新资讯28at.com

  • -Xms:初始堆大小
  • -Xmx:最大堆大小
  • -Xmn:新生代大小
  • -Xss:线程堆栈大小,默认为1M
  • -XX:MaxPermSize=n:设置持久代大小
  • -XX:NewRatio:新生代和老年代的比例
  • -XX:SurvivorRatio:Eden区和Survivor区的比例

(2) GC调优参数:lCV28资讯网——每日最新资讯28at.com

  • -XX:+UseSerialGC:使用串行垃圾回收器
  • -XX:+UseParallelGC:使用并行垃圾回收器
  • -XX:+UseConcMarkSweepGC:使用CMS垃圾回收器
  • -XX:+UseG1GC:使用G1垃圾回收器
  • -XX:MaxGCPauseMillis:最大GC停顿时间
  • -XX:+UseAdaptiveSizePolicy:自适应GC策略

(3) GC统计信息lCV28资讯网——每日最新资讯28at.com

  • -XX:+PrintGC:输出形式:
[GC 118250K->113543K(130112K), 0.0094143 secs][Full GC 121376K->10414K(130112K), 0.0650971 secs]
  • -XX:+PrintGCDetails:输出形式:
[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs][GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]
  • -XX:+PrintGCTimeStamps:打印GC停顿耗时
  • -XX:+PrintGCApplicationStoppedTime:打印垃圾回收期间程序暂停的时间.
  • -XX:+PrintHeapAtGC:打印GC前后的详细堆栈信息
  • -Xloggc:filename:把相关日志信息记录到文件以便分析.

(4) 线程调优参数lCV28资讯网——每日最新资讯28at.com

  • -Xss:每个线程的堆栈大小
  • -XX:ParallelThreads:并行处理的线程数
  • -XX:+UseThreadPriorities:启用线程优先级
  • -XX:+UseCondCardMark:使用条件卡片标记

(5) 类加载调优参数lCV28资讯网——每日最新资讯28at.com

  • -XX:MaxPermSize:最大方法区大小
  • -XX:+CMSClassUnloadingEnabled:启用CMS类卸载
  • -XX:+UseCompressedOops:使用压缩对象指针

(6) 其他调优参数lCV28资讯网——每日最新资讯28at.com

  • -XX:+UseBiasedLocking:启用偏向锁
  • -XX:+OptimizeStringConcat:启用字符串拼接优化
  • -XX:MaxTenuringThreshold:对象晋升老年代的年龄阈值
  • -XX:CompileThreshold:JIT编译阈值
  • -XX:+PrintGCDetails:打印GC详细信息

示例配置

-XX:NewRatio=1:设置新生代和年老代的比值为2:1-Xss:线程堆栈大小,默认为1M,调整为512K-XX:+UseG1GC:使用G1做为GC收集器-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间为20ms

lCV28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-19964-0.htmlJVM的调优常用参数

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 消息代理与事件代理:何时使用它们

下一篇: ​Gorm 中的钩子和回调

标签:
  • 热门焦点
  • 女孩租房开2小时空调用完100元电费引热议:5级能耗惹不起 月薪过万电费也交不起

    女孩租房开2小时空调用完100元电费引热议:5级能耗惹不起 月薪过万电费也交不起

    近日,江苏苏州一女孩租房当天充值了100元电费,开着空调不到2小时发现电费已用完。对于为什么这个快,房东表示,电表坏了这种情况很多,之前也遇到过,给租客换
  • JavaScript 混淆及反混淆代码工具

    JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • 掘力计划第 20 期:Flutter 混合开发的混乱之治

    掘力计划第 20 期:Flutter 混合开发的混乱之治

    在掘力计划系列活动第20场,《Flutter 开发实战详解》作者,掘金优秀作者,Github GSY 系列目负责人恋猫的小郭分享了Flutter 混合开发的混乱之治。Flutter 基于自研的 Skia 引擎
  • Flowable工作流引擎的科普与实践

    Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 自动化在DevOps中的力量:简化软件开发和交付

    自动化在DevOps中的力量:简化软件开发和交付

    自动化在DevOps中扮演着重要角色,它提升了DevOps的效能。通过自动化工具和方法,DevOps团队可以实现以下目标:消除手动和重复性任务。简化流程。在整个软件开发生命周期中实现更
  • 这款新兴工具平台,让你的电脑效率翻倍

    这款新兴工具平台,让你的电脑效率翻倍

    随着信息技术的发展,我们获取信息的渠道越来越多,但是处理信息的效率却成为一个瓶颈。于是各种工具应运而生,都在争相解决我们的工作效率问题。今天我要给大家介绍一款效率
  • .NET 程序的 GDI 句柄泄露的再反思

    .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • 签约井川里予、何丹彤,单视频点赞近千万,MCN黑马永恒文希快速崛起!

    签约井川里予、何丹彤,单视频点赞近千万,MCN黑马永恒文希快速崛起!

    来源:视听观察永恒文希传媒作为一家MCN公司,说起它的名字来,可能大家会觉得有点儿陌生,但是说出来下面一串的名字之后,或许大家就会感到震惊,原来这么多网红,都签约这家公司了。根
  • 当家的盒马,加速谋生

    当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己“当家”的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
Top