首页 > 其他分享 >JVM知识总结(性能调优)

JVM知识总结(性能调优)

时间:2024-08-06 11:26:33浏览次数:16  
标签:总结 代码 调优 GC JVM hardyfish top

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

在这里插入图片描述

性能调优

何时进行JVM调优?

遇到以下情况,就需要考虑进行JVM调优了:

  • Heap内存(老年代)持续上涨达到设置的最大内存值
  • Full GC 次数频繁
  • GC 停顿时间过长(超过1秒)
  • 应用出现OutOfMemory等内存异常
  • 系统吞吐量与响应性能不高或下降

JVM调优基本原则:

大多数的Java应用不需要进行JVM优化

大多数导致GC问题的原因是代码层面的问题导致的(代码层面)

上线之前,应先考虑将机器的JVM参数设置到最优

减少创建对象的数量(代码层面)

减少使用全局变量和大对象(代码层面)

优先架构调优和代码调优,JVM优化是不得已的手段(代码、架构层面)

分析GC情况优化代码比优化JVM参数更好(代码层面)

JVM调优目标:

延迟:

  • GC低停顿和GC低频率

没有FullGC

高吞吐量

JVM调优步骤:

一般情况下,JVM调优可通过以下步骤进行:

  • 分析GC日志及Dump文件,判断是否需要优化,确定瓶颈问题点
  • 确定JVM调优量化目标
  • 确定JVM调优参数(根据历史JVM参数来调整)
  • 依次调优内存、延迟、吞吐量等指标
  • 对比观察调优前后的差异
  • 不断的分析和调整,直到找到合适的JVM参数配置
  • 找到最合适的参数,将这些参数应用到所有服务器,并进行后续跟踪

JVM调优建议

年轻代和老年代的比例需要结合实际场景调整

  • 由于老年代的GC成本通常都会比年轻代的成本要高许多。
  • 所以建议适当地通过Xmn命令区设置年轻代的大小,最大限度的降低对象晋升到老年代的情况。

合理设置Eden区和Survivor区比例

  • 合理分配Eden区和Survivor区,尽量不要让对象进入老年代。

标签:总结,代码,调优,GC,JVM,hardyfish,top
From: https://blog.csdn.net/qq_35508033/article/details/140951058

相关文章

  • linux进程篇总结——实战——自定义shell
        前言:经过过去两章十二篇文章的学习,我们已经知道了进程的基本概念以及进程的控制方法。本篇内容就是使用过去学习的内容自己写一个功能简单的shell外壳程序,也就是我们使用的bash命令行。本篇内容是过去进程知识的集大成者。我们在这个实战程序中,将过去学过的......
  • 【数据结构】一文总结算法的时间复杂度与空间复杂度
    目录一.算法的复杂度二.时间复杂度1.概念2.大O的渐进表示法3.实践练习3.1练习13.2 练习23.3 练习33.4练习43.5练习5三.空间复杂度 1.概念2.实践练习2.1练习12.2练习22.3练习32.4练习4四.编程题练习 1. 消失的数字2.轮转数组 一.......
  • 8.5日每日总结之双板升级下载
    之前搞BOOTLOAD双区升级时忘记记录了,现在补充上。keil软件使用时,配置h文件路径,./表示进入文件夹;最好是把所有文件放到一个新的文件夹里,以防复制工程时会打开上一次的文件,新复制文件最好重新编译一下。双板升级时,一款板子做主板,内存大的优先,另一块做副板,由主板和WIFI通信控制两块......
  • 8月5日CSP-S模拟赛赛后总结
    8月5日CSP-S模拟赛赛后总结\[8月5日\\CSP-S模拟赛\\赛后总结\\2024年8月5日\\by\\\uhw177po\]一、做题情况第一题比赛\(100pts\),赛后\(AC\)第二题比赛\(20pts\),赛后\(AC\)第三题比赛\(0(40)pts\),赛后\(AC\)第四题比赛\(0(50)pts\),赛后\(A......
  • Dzzoffice结合OnlyOffice 报错排查流程总结
    检测OnlyOffice服务是否安装成功首先访问OnlyOffice首页,如下图:出现上图仍旧不能说明你的OnlyOffice服务已经成功安装,我们需要启动OnlyOffice服务测试用例来检测,可以看到上图出现了两条命令,第一条命令是用来启动测试用例服务的,我们只需要在后台执行该命令即可,Win......
  • Spring基础知识学习总结(一)
    一.基础介绍Spring是一个轻量级Java开发框架,最早有RodJohnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEEfull-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发......
  • 聊聊JVM如何优化
       首先应该明确的是JVM调优不是常规手段,JVM的存在本身就是为了减轻开发对于内存管理的负担,当出现性能问题的时候第一时间考虑的是代码逻辑与设计方案,以及是否达到依赖中间件的瓶颈,最后才是针对JVM进行优化。1.JVM内存模型针对JAVA8的模型进行讨论,JVM的内存模型主要分为......
  • 性能测试之内存瓶颈问题分析与调优
    注意:内存问题是性能分析与调优非常常见的一类问题(内存不足/内存泄露/内存溢出等)一、内存概念:计算机的存储系统分为主存储系统(内存)辅助存储系统(外存)外存:计算机的辅助存储器,包括硬盘、软盘、光盘、网络云盘等【输入-键盘,鼠标,输出-屏幕,音频视频】内存:内存(Memory)又称主存,......
  • 【待做】【域渗透】获取域控方法总结
    搭建虚拟环境【域控】,192.168.10.3【域成员】,192.168.10.4工具mimikatzprocdump64在域渗透中、作为渗透测试人员,获取域控的权限基本上可以获取整个内网的权限。在大多数情况下,攻击者可以通过定位域管理员所登录的服务器,利用漏洞获取服务器system权限,找到域管理的账号、......
  • 线程相关个人笔记总结
    什么是线程和进程进程是一个程序的实例,线程是进程中的实体,一个进程有多个线程线程的创建方式1.继承Thread类重写run() 创建一个类继承自Thread类,并重写run()方法来定义线程执行的任务。通过创建该类的实例并调用start()方法来启动线程。classMyThreadextends......