文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java JVM调优技能有哪些

2023-06-25 17:17

关注

这篇文章主要介绍“Java JVM调优技能有哪些”,在日常操作中,相信很多人在Java JVM调优技能有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java JVM调优技能有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.什么时候需要JVM调优

这些表象一般伴随着频繁的垃圾回收,或者OOM。

2.JVM调优一般调什么

堆内存参数

| -Xms512m | 初始堆大小

默认值:若未设置,初始值将是老年代和年轻代分配制内存之和
-Xmx1024m

年轻代内存相关参数

| -Xmn512m | 新生代的初始值及最大值。

默认值:堆内存的1/4(已经分配的堆内存的1/4)。
-XX:NewSize=512m
-XX:MaxNewSize=512m
-XX:NewRatio=8

比如-XX:NewRatio=8

表示:老年代内存:年轻代内存=8:1 |

| -XX:SurvivorRatio=8 | 新生代和存活区的比例

-XX:SurvivorRatio=8

表示存活区:新生代=1:8 =》新生代占年轻代的8/10,每个存活区各占年轻代的1/10 |

元空间参数

| -XX:MetaspaceSize | 初始元空间大小

达到该值就会触发垃圾收集进行类型卸载
-XX:MaxMetaspaceSize=256m

3.JVM调优基本步骤

首先在启动程序的时候

3.1添加GC日志相关的参数

-XX:+PrintGC:输出GC日志-XX:+PrintGCDetails:输出GC的详细日志-XX:+PrintGCTimeStamps:输出GC的时间戳(以基准时间的形式)-XX:+PrintGCDateStamps:输出GC的时间戳(以日期的形式,如2018-08-29T19:22:48.741-0800)-XX:+PrintHeapAtGC:在进行GC的前后打印出堆的信息-Xloggc:gc.log:日志文件的输出路径

3.2添加内存溢出与Full gc前快照输出参数

-XX:+HeapDumpOnOutOfMemoryError 发生内存溢出时生成heapdump文件-XX:+HeapDumpBeforeFullGC 发生Full gc前生成heapdump文件-XX:HeapDumpPath:指定heapdump输出路径

3.3通过日志确定问题

3.3.1堆内存不足
3.3.2频繁Full gc

总结:

若是代码问题可通过版本控制工具找到本期变更的代码,优化代码

若非代码问题,可适当增加堆内存大小、新生代老年代的大小与比例 , 适当增大新生代内存大小。

4.监控工具

4.1使用jstat 统计gc相关信息

jstat 是 jdk bin 下自带工具,最多的是用来统计gc相关信息,使用步骤如下。

获取进程号 ps -ef|grep 对应进程

例如我想统计jvm-demo.jar(进程号27164)的gc信息,并且每隔3秒统计一次,可以执行以下命令

jstat -gcutil 27164 3000

Java JVM调优技能有哪些

主要关注以下几个。

若要进一步查看上一次GC信息

jstat -gccause 27146 3000

Java JVM调优技能有哪些

4.2使用jmap命令查某时刻的JVM堆信息

使用步骤

jmap -heap 2865

输出内容示例:

Attaching to process ID 27146, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.144-b01using thread-local object allocation.Mark Sweep Compact GC#堆相关的配置信息Heap Configuration:   MinHeapFreeRatio         = 40   MaxHeapFreeRatio         = 70   MaxHeapSize              = 104857600 (100.0MB)   NewSize                  = 10485760 (10.0MB)   MaxNewSize               = 34930688 (33.3125MB)   OldSize                  = 20971520 (20.0MB)   NewRatio                 = 2   SurvivorRatio            = 8   MetaspaceSize            = 21807104 (20.796875MB)   CompressedClassSpaceSize = 1073741824 (1024.0MB)   MaxMetaspaceSize         = 17592186044415 MB   G1HeapRegionSize         = 0 (0.0MB)#堆占用相关的配置信息Heap Usage:New Generation (Eden + 1 Survivor Space):   capacity = 12517376 (11.9375MB)   used     = 10708296 (10.212226867675781MB)   free     = 1809080 (1.7252731323242188MB)   85.54745020042539% usedEden Space:   capacity = 11141120 (10.625MB)   used     = 10708272 (10.212203979492188MB)   free     = 432848 (0.4127960205078125MB)   96.11486098345588% usedFrom Space:   capacity = 1376256 (1.3125MB)   used     = 24 (2.288818359375E-5MB)   free     = 1376232 (1.3124771118164062MB)   0.0017438616071428572% usedTo Space:   capacity = 1376256 (1.3125MB)   used     = 0 (0.0MB)   free     = 1376256 (1.3125MB)   0.0% usedtenured generation:   capacity = 27684864 (26.40234375MB)   used     = 27096504 (25.84123992919922MB)   free     = 588360 (0.5611038208007812MB)   97.87479541167332% used15431 interned Strings occupying 2044328 bytes.

5.常用的调优工具有哪些?

JDK内置的命令行:jps(查看jvm进程信息)、jstat(监视jvm运行状态的,比如gc情况、jvm内存情况、类加载情况等)、jinfo(查看jvm参数的,也可动态调整)、jmap(生成dump文件的,在dump的时候会影响线上服务)、jhat(分析dump的,但是一般都将dump导出放到mat上分析)、jstack(查看线程的)。

JDK内置的可视化界面:JConsoleVisualVM,这两个在QA环境压测的时候很有用。

阿里巴巴开源的arthas:神器,线上调优很方便,安装和显示效果都很友好

到此,关于“Java JVM调优技能有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯