jvm性能调优入门

小路不懂2 小路不懂2     2022-10-06     407

关键词:

1. 背景

虽然大多数应用程序使用JVM的默认设置就能很好地工作,仍然有不少应用程序需要对JVM进行额外的配置才能达到其期望的性能要求。现在JVM为了满足各种应用的需要,为程序运行提供了大量的JVM配置选项。不幸的是,针对一个应用程序进行的JVM调优(配置)可能并不适用于另一个应用程序。

注意:为了达到应用程序的系统需求,可能需要进行多次迭代才能获得应用程序干系人满意的程序性能。

2. 应用程序的系统需求

吞吐量、响应时间、内存消耗量、可用性、可管理性等。

1. 可用性

可用性是对应用程序处于可操作,可使用状态的度量。可用性需求指的是当引用程序的某些组件发生故障或失效时,应用程序或应用程序的一部分在多大程度上还可以继续提供服务。

2. 可管理性

可管理性是对由运行,监控应用程序而产生的操作性开销的度量,同时也包含了配置应用程序的难易程度。

3. 吞吐量

吞吐量是对单位时间内处理工作量的度量。设计吞吐量需求时,一般不考虑它对延迟或响应时间的影响。通常情况下,增加吞吐量的代价是延迟的增加或内存使用的增加。

4. 延迟及响应性

延迟或响应性是对应用程序收到指令开始工作直到完成该工作消耗时间的度量。定义延迟或响应性需求时并不考虑程序的吞吐量,通常情况下,提高响应性或缩小延迟的代价是更低的吞吐量或更多的内存消耗。

5. 内存占用

内存占用指的同等程度的吞吐量,延迟,可用性和可管理性前提下,运行应用程序所需的内存大小。内存占用通常以运行应用程序需要的Java堆大小或运行应用程序需要的总内存大小来表述。一般情况下,通过增大Java堆的方式增加可用内存能够提高吞吐量,降低延迟或兼顾两者。

6. 启动时间

启动时间是应用程序初始化所消耗的时间。

3. JVM部署模式

JVM部署模式选择指的是将应用程序部署到单个JVM实例上,还是部署到多个JVM实例上。

1. 单JVM部署模式

采用单JVM部署模式的应用程序存在单点故障的问题。

2. 多JVM部署模式

将JVM应用程序部署到多个JVM实例能够获得更好的可用性,以及更低延迟的可能性。

多JVM部署模式可能提供更低的延迟,这是因为多JVM部署模式下,Java堆通常比较小,较小的堆在垃圾收集时产生的停顿更小。通常情况下,垃圾收集锁产生的停顿是影响应用程序延迟性的最主要因素。

一般情况下,使用的JVM数目越少越好,监控和管理成本就越低,消耗的总内存也更少。

4. JVM运行模式

1. Client模式或Server模式

HotSpot VM有2中运行模式:Client模式、Server模式、Tiered Server模式。

Client模式的特点是启动快、占用内存少、JIT编译器生成代码的速度也更快。

Server模式则提供了更复杂的生成码优化功能,这个功能对于服务器应用而言尤其重要。大多数Server模式的JIT编译优化都要消耗额外的时间以收集更多的应用程序行为信息、为应用程序运行生成更优的生成码。

Tiered Server模式结合了Client和Server运行模式的长处,即快速启动和高效的生成码。通过-server -XX:+TieredCompilation命令行选项可以启动Tiered Server模式。

 

jvm性能调优

  JVM技术图谱 性能调优性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等。架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。性能调优基本上按照以... 查看详情

jvm性能调优

  JVM技术图谱 性能调优性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等。架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。性能调优基本上按照以... 查看详情

jvm性能调优

JVM性能调优JVM垃圾回收与性能调优总结JVM调优的几种策略 650)this.width=650;"src="http://dl2.iteye.com/upload/attachment/0101/2383/3d11dfb9-18ca-32f6-8e45-48522c670e92.jpeg"title="点击查看原始大小图片"class="magplus"width="700"hei 查看详情

spark性能调优之jvm调优

 Spark性能调优之JVM调优通过一张图让你明白以下四个问题        1.JVMGC机制,堆内存的组成        2.Spark的调优为什么会和JVM的调优会有关联?--因为Scala也是基于JVM运... 查看详情

jvm性能调优实践——jvm篇

前言在遇到实际性能问题时,除了关注系统性能指标。还要结合应用程序的系统的日志、堆栈信息、GClog、threaddump等数据进行问题分析和定位。关于性能指标分析可以参考前一篇JVM性能调优实践——性能指标分析。JVM的调优和故... 查看详情

jvm性能调优

JVM垃圾回收与性能调优总结JVM调优的几种策略  一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动... 查看详情

jvm常用调优参数——jvm篇(代码片段)

JVM常用性能调优参数详解​在学习完整个JVM内容后,其实目标不仅是学习了解整个JVM的基础知识,而是为了进行JVM性能调优做准备,所以以下的内容就是来说说JVM性能调优的知识。一、性能调优​性能调优包含多个层... 查看详情

jvm性能调优

一、JVM性能调优策略二、性能调优1、Java线程池(java.util.concurrent.ThreadPoolExecutor)    大多数JVM6上的应用采用的线程池都是JDK自带的线程池,之所以把成熟的Java线程池进行罗嗦说明,是因为该线程池的行为与我们... 查看详情

jvm原理及性能调优系列(jvm调优)

...好堆的比例分配。2、设置合适的新生代因为对其对系统性能和GC回收有一定的影响。3、设置合适的持久代因为其直接决定系统可以支持多少个类定义和多少个常亮。4、设置合适的线程栈否则系统可能因为线程所需资源和空间不... 查看详情

jvm性能调优监控工具专题一:jvm自带性能调优工具

前提概要:      JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一种工具都有其自身的特点,用户可以根据你需要检... 查看详情

深入理解jvm——jvm性能调优实战

如何在高性能服务器上进行JVM调优;以便充分利用高性能服务器的硬件资源,有两种JVM调优方案。一、       采用64位操作系统,并为JVM分配大内存分析:如果JVM中堆内存太小,那么就会频繁地发生垃圾... 查看详情

jvm性能调优实战-61常用的jvm调优网站

文章目录线程Dump日志分析堆Dump可视化分析GC日志分析AlibabaArthasAliabbajvmGeneratePerfMaPerfMa-XXFox(Java虚拟机参数分析)PerfMa-XSheepdog(Java线程Dump分析)PerfMa-XElephant(Java内存Dump分析)线程Dump日志分析https://fastthread.io在线的 查看详情

jvm性能调优(代码片段)

jvm性能调优一、jvm内存模型二、目标在以下三点中,通过修改jvm参数寻找平衡。GC的时间足够的小GC的次数足够的少发生FullGC的周期足够的长三、方法减少使用全局变量和大对象;调整新生代的大小到最合适;设置老年代的大小... 查看详情

jvm性能调优实战之:一次系统性能瓶颈的寻找过程

玩过性能优化的朋友都清楚,性能优化的关键并不在于怎么进行优化,而在于怎么找到当前系统的性能瓶颈。性能优化分为好几个层次,比如系统层次、算法层次、代码层次...JVM的性能优化被认为是底层优化,门槛较高,精通这... 查看详情

jvm原理和性能调优

JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境.1.创建JVM装载环境和配置2.装载JVM.dll3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例4.调用JNIEnv实例装载并处理class类。 在我们运行... 查看详情

jvm性能调优监控工具jpsjstackjmapjhatjstathprof使用详解

...题是Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用。本文参考了网上很多资料,难以一一列举,在此对这些资料的作者表示感谢!关于JVM性能调优相关的资料,请参考文... 查看详情

spark性能优化-jvm虚拟机垃圾回收调优

12 34 查看详情

elasticsearch性能优化实践(jvm调优+es调优)

参考技术A近一年内对公司的ELK日志系统做过性能优化,也对SkyWalking使用的ES存储进行过性能优化,在此做一些总结。本篇主要是讲ES在ELK架构中作为日志存储时的性能优化方案。随着接入ELK的应用越来越多,每日新增索引约230个... 查看详情