网站首页 > 百科 >如何调优jvm[如何从什么开始调优JVM,效果如何]

如何调优jvm[如何从什么开始调优JVM,效果如何]

Bitget下载

注册下载Bitget下载,邀请好友,即有机会赢取 3,000 USDT

APP下载   官网注册

本人有多年的区块链服务经验,为用户提供专业的服务信息。在这里,我将介绍如何调优jvm以及如何从什么开始调优jvm,调优效果如何。选择可以随时随地解决玩币遇到的各种问题。,让你不再担心繁琐的职称评定。

JVM调优的常用命令工具包括:

1)jps命令用于查询正在运行的JVM进程,

2)jstat可以实时显示本地或远程JVM进程中的类加载、内存、垃圾回收、JIT编译等数据

3)jinfo用于查询此处当前运行的JVM属性和参数的值。

4)jmap用于显示当前Java堆和永久生成的细节

5)jhat用于分析jmap生成的转储文件,是JDK自带的工具

6)jstack用于生成当前JVM的所有线程快照。线程快照是虚拟机的每个线程正在执行的方法,目的是定位线程长时间暂停的原因。

-xms256m;初始化堆大小为256m

-Xmx2g:堆的最大内存是2g;

-xmn50m;新生界大小为50m

-XX:printgdetails?打印千兆周详细信息

-XX:heapdumponotofmemoryerror?在发生OutOfMemoryError错误错误错误时,转储堆快照

-XX:NewRatio=4?将年轻一代和老一代的记忆比例设置为1:4;

-XX:SurvivorRatio=8?将新一代中伊甸人与幸存者的比例设定为8:2;

//参数上写的是新一代垃圾收集器

-XX:UseSerialGC?新生代和老一代都用串行集电极串行?旧系列

-XX:UseParNewGC?指定使用全新串行旧垃圾收集器组合;

-XX:UseParallelGC?新一代用的是并行清除,旧时代用的是串行olduJuye

//都是垃圾收集器

-xx:useparallelloldgc:parallelworldcombinationofthenewgenerationandtheoldageofcavenge;

-XX:useconcmasweepgc:parnew用于新一代和CMS是用在老年的;

-XX:newsize;新生代最小值;

-XX:MaxNewSize:新生代最大值

-xx:元空间大小的初始大小

-xx:max元空间大小最大值

。JstatName:JavaVirtualMachineStatisticsMonitoringTool

FunctionDescription:

JstatisalightweightgadgetthatcomeswithJDK.。它位于java的bin目录下,主要利用JVM的内置指令在命令行上实时监控Java应用的资源和性能,包括堆大小和垃圾收集。

命令用法:jstat[-命令选项][vmid][间隔/毫秒][查询次数]

注意:使用的jdk版本是jdk8。

c:usersadministratorjstat-helpusage:jstat-help|-optionsjstat-option[-t][-hlines]vmid[interval[count]]definition:optionvmidvirtualmachineidentifierreportedbyoption-options.Thevmidtakesthefollowingform:lvmid[@hostname[:port]],wherelvmidisthelocalvmidentifierofthetargetJavavirtualmachine,usuallytheprocessID;HostnameisthenameofthehostrunningthetargetJavavirtualmachine;Portistheportnumberofrmiregistryonthetargethost.Foramorecompletedescriptionofthevirtualmachineidentifier,seethejvmstatdocumentation.Numberofsamplesbetweenheaderrows.Intervalsamplinginterval.Thefollowingformsareallowed:n["ms"|"s"],wherenisaninteger,andthesuffixspecifiesmilliseconds("ms")orseconds("s").Thedefaultunitis"milliseconds"Calculatethenumberofsamplestobecollectedbeforetermination.-Jflagpassestheflagdirectlytotheruntimesystem.

选项:参数选项

-t:可以在打印列中添加时间戳列,显示系统运行时间

-h:输出周期性数据时。,指定要输出多少行,然后输出一次。Header

VMID:虚拟机ID(进程的PID)

interval:以毫秒为单位的执行间隔

计数:用于指定输出记录的次数,

选项默认一直打印。您可以从以下参数中选择

jstat-options

-class用于查看类加载的统计数据

-编译器用于查看HotSpot中即时编译器编译的统计数据

-gc用于查看JVM中堆的垃圾收集的统计数据。

-gccapacity用于查看新世代、老世代和持久世代的存储容量

-gcmetacapity显示元空间的大小

-gcnew用于查看新一代的垃圾收集

-gcnewcapacity用于查看新一代的存储容量

-gcold用于查看老一代的垃圾收集和持久代

-gcoldcapacity用于查看老一代的容量

-gcutil显示垃圾收集信息

-gcause显示关于垃圾收集的信息(pass-gcutil),同时显示当前只发生的上一次垃圾收集的原因

-print编译输出JIT编译的方法信息。

例:

1。-类加载统计

[root@hadoop~]#jps#First,theJavalanguage(acomputerlanguage,Especiallyforcreatingwebsites)processnumber(here,itisacityzooprocess)3346quorumpermain7063JPS[root@Hadoop~]#jstat-class3346#Countingthenumberandsizeofclassesloadedinavirtualmachine(abbreviationofJavaVirtualMachine)Bytetimeofloadedbytesunloaded15272842.70.01.02.

Loaded:已加载类的数量

Bytes:已加载类的大小(以字节计)

Unloaded:已卸载类的数量

Bytes:以字节为单位的卸载类的大小

time:加载和卸载类所用的时间

2。-编译器编译统计

[root@Hadoop~]#jstat-compiler3346#Statisticalcompilationfailureinvalidtimefailuretypefailuremethod404000.190forviewingthecompilationsituationofreal-timecompilersinhotspots.

编译:编译任务执行数量

失败:编译任务执行失败数量

无效:编译任务执行失败数量

Time:编译任务消耗时间

FailedType:上次编译失败任务的类型

FailedMethod:上次编译失败任务的类和方法

第三章.-gc垃圾回收统计

[root@Hadoop~]#jstat-GC3346#用于查看虚拟机(Java虚拟机的缩写)中堆的垃圾收集情况的统计S0CS1CS0US1UECEUOCOUMCMUCCSCCCSUYGCYGCTFGCFGCTGCT128.0128.00.01024.0919.815104.02042.48448.08130.41024.0996.070.0190.0000.019

S0C:年轻一代中第一幸存者的容量(字节)

S1C:年轻一代中第二幸存者的容量(字节)

S0U:年轻一代中第一个幸存者的当前使用空间(字节)

S1U:年轻一代中第二个幸存者的当前使用空间(字节)

EC:年轻一代Eden的容量(字节)

EU:年轻一代Eden当前使用的空间(字节)

OC:老一代的容量(字节)

ou:旧代当前使用的空间(字节)

MC:元空间的容量(字节)

Mu:元空间当前使用的空间(字节)

CCSC:当前压缩类空间的容量(以字节为单位)

CCSU:当前压缩类空间的当前使用空间(以字节为单位)

Ygc:年轻一代从应用启动到采样的gc次数。

YgcT:年轻一代从应用程序启动到采样的GC时间

FGC:老一代(完全GC)从应用程序启动到采样的GC时间

FgcT:旧代GC(完全GC)从应用程序启动到采样所用的时间

GCT:GC从应用程序启动到采样所用的总时间

4。-gccapacityheapmemorystatistics

[root@Hadoop~]#jstat-gccapacity3346#usedtoviewtheCenozoic,StoragecapacityofoldgenerationandpersistentgenerationNGCMnNGCMXNGCS01C1CECMNOGCMXOGCOCMCMNMCMXMCCCSMNCCSMXCCSCYGCFGC1280.083264.01280.0128.01024.015104.0166592.015104.015104.001056768.08448.0.01048576Displaytheheaderevery5lines1000:displayiteverysecond.,单位为毫秒NGCMnNGCMXNGCS0CS1CECOGCMnOGCMXOGCOCMCMNMCMXMCCCSMnCCSMXCCSCYGCFGC1280.083264.01280.0128.01024.015104.0166592.015104.015104.01056768.084480.0.0104857615104.015104.00.01056768.08448.000.01048576.01024.0701280.083264.01280.0128.0128.01024.015104.0166592.015104.015104.0015104.00000000.0104.0104.0104.0104.0105.10101280.083264.01280.0128.0128.01024.015104.0166592.015104.015104.00.01056768.08448.00.01048576.01024.0701280.083264.01280.0128.0128.01024.015104.0166592.015104.015104.00.01056768.08448.00.01048576.01024.070

NGCMN:年轻一代中初始化(最小)的大小(字节)

NGCMX:年轻一代的最大容量(字节)

NGC:年轻一代中的当前容量(字节)

S0C:年轻一代中第一个幸存者的容量(字节)

S1C:年轻一代中第二幸存者的容量(字节)

EC:年轻一代中伊甸园的容量(字节)

ogcmn:旧代中的初始化(最小)大小(字节)

ogcmx:旧代的最大容量(字节)

OGC:旧代的当前新生成容量(字节)

oc:老一代的容量(字节)

mcmn:元空间中初始化的大小(最小值)(字节)

mcmx:元空间的最大容量(以字节为单位)

MC:当前新生成的元空间的容量(以字节为单位)

CCSMN:最小压缩类空间大小。

CCSMX:最大压缩类空间大小

CCSC:当前压缩类空间大小

Ygc:年轻一代从应用启动到采样的gc时间

FGC:从应用程序启动到采样的老一代GC时间

5。-GCmetacapacity元数据空间统计数据

[root@Hadoop~]#jstat-GCmetacapacity3346#显示元数据空间的大小CCSCYGCFGCFGCTGCT0.01056768.08448.00.01048576.01024.0800.0000.020

MCMN:最小元数据容量

MCMX:最大元数据容量

MC:当前元数据空间大小

CCSMN:最小压缩类空间大小

CCSMX:最大压缩类空间大小

CCSC:当前压缩类空间大小

Ygc:年轻一代从应用启动到采样的gc时间

FGC:老一代(完全GC)从应用程序启动到采样的GC时间

FGCT:老一代(完全gc)gc从应用程序启动到采样所用的时间

gcT:GC从应用程序启动到采样所用的总时间

6。-gcnew垃圾收集统计信息

[root@Hadoop~]#jstat-gcnew3346#Usedtoviewthesituationofgarbagecollectioninthenewgeneration.S0CS1CS0USUTTMTTDSSEUYGCYCT128.0128.067.80.011564.01024.0362.280.020.

S0C:年轻一代中第一幸存者的容量(字节)

S1C:年轻一代中第二幸存者的容量(字节)

S0U:年轻一代中第一个幸存者的当前使用空间(字节)

S1U:年轻一代中第二个幸存者的当前使用空间(字节)

TT:持有次数限制

MTT:最大持有次数限制

DSS:期望生存面积大小

EC:年轻一代伊甸园容量(字节)

EU:年轻一代中Eden当前使用的空间(字节)

Ygc:年轻一代中从应用程序启动到采样的gc时间

YgcT:年轻一代中的GC从应用程序启动到采样所用的时间

7。-新一代gcnewcapacity的内存统计

[root@Hadoop~]#jstat-gcnewcapacity3346#用于查看新生代存储容量的情况NGCMnNGCMXNGCS0CMXS0CS1cmxS1CECMXECYGCFGC1280.083264.01280.08320.0128.08320.0128.066624.01024.080

NGCMN:年轻一代中初始化(最小)的大小(字节)

NGCMX:年轻一代的最大容量(字节)

NGC:年轻一代中的当前容量(字节)

S0CMX:年轻一代中第一个幸存者的最大容量(字节)

S0C:年轻一代中第一幸存者(生存区域)的容量(字节)

S1CMX:年轻一代中第二幸存者(生存区域)的最大容量(字节)

S1C:年轻一代中第二幸存者(生存区域)的容量(字节)

ECMX:年轻一代中Eden的最大容量(字节)

EC:年轻一代中Eden的容量(字节)

Ygc:年轻一代中从应用程序启动到采样的gc时间

FGC:从应用程序启动到采样的老一代GC时间

8。-gcold垃圾收集统计信息

[root@Hadoop~]#jstat-gcold3346#用于检查陈年和持久代的垃圾收集。中国FGCGCT8448.08227.51024.01003.715104.02102.2800.0000.020。

MC:元空间容量(字节)

Mu:当前使用的元空间空间(字节)

CCSC:压缩类空间大小

CCSU:压缩类空间的已用大小

oc:老一代的容量(字节)

ou:老一代的当前已用空间(字节)

Ygc:年轻一代从应用程序启动到采样的gc时间

FGC:老一代(完全GC)从应用程序启动到采样的GC时间

FgcT:旧代GC(完全GC)从应用程序启动到采样所用的时间

GCT:GC从应用程序启动到采样所用的总时间

。9。-旧gcoldspace的内存统计信息

[root@Hadoop~]#jstat-gcoldcapacity3346#用于查看老年代的容量OGC锰OGCMXOGCOCYGCFGCFGCTGCT15104.0166592.015104.015104.0800.0000.020

ogcmn:老一代中的初始化(最小)大小(字节)ogcmx:老一代中的最大容量(字节)Ogc:老一代中当前新生成的容量(字节)OC:老一代中的容量(字节)Ygc:年轻一代中从应用启动到采样的GC时间FGC:从应用启动到采样。GctimesFgcT:老一代(fullgc)gc从应用启动到采样所用的时间(s)GCT:GC从应用启动到采样所用的总时间(s)这里给大家推荐一个架构学习交流圈。。假鑫:1253431195(里面有大量面试问答)会分享一些资深架构师录制的视频:Spring,MyBatis,Netty源代码分析,高并发,高性能,分布式,微服务架构的原理。、JVM性能优化、分布式架构等成为架构师必备的知识体系。还可以获得免费的学习资源,目前已经受益匪浅

10。-gcutil垃圾收集统计信息

[root@Hadoop~]#jstat-gcutil3346#显示垃圾收集信息s0S1EOMCCSYGCYGCTFGCFGCTGCT52.970.0042.1013.9297.3998.0280.0200.0000.020

S0:年轻一代中第一个幸存者(生存区域)使用的当前容量百分比

S1:年轻一代中第二个幸存者(生存区域)使用的当前容量百分比

E:年轻一代Eden当前容量的百分比

o:老一代Eden当前容量的百分比

M:元数据区当前容量的百分比

CCS:当前容量中使用的压缩类空间的百分比

Ygc:年轻一代中从应用程序启动到采样的gc时间

YgcT:年轻一代从应用程序启动到采样所用的GC时间

FGC:老一代(完整GC)从应用程序启动到采样所用的GC时间

FgcT:旧代GC(完全GC)从应用程序启动到采样所用的时间

GCT:GC从应用程序启动到采样所用的总时间

11。-gccause。

[root@Hadoop~]#jstat-GCcause3346#显示关于垃圾收集的信息(通过-gcutil)。同时显示上次或当前垃圾收集的诱因,s0s1EOmCCSYGCTFGCFGCFGCTGCTLGCCGCC52.970.0046.0913.9297.3998.0280.02000.0000.020分配失败无GC。

LGCC:上次GC原因

GCC:当前GC原因(没有GC表示当前没有执行GC)

12.-打印编译JVM编译方法统计信息

[root@Hadoop~]#jstat-printcompilation3346#OutputmethodinformationcompiledbyJiteDanceMusicCompilationsizetypemethod421601sun/nio/ch/Util$2clear

编译:编译任务数

大小:方法生成的字节码大小

类型:编译类型

方法:类名和方法名用于标识编译后的方法。类名使用/作为命名空间分隔符。方法名是给定类中的方法。上述格式由-xx:printcompilation选项

设置

远程监控

和jps一样,jstat也支持远程监控,也需要开启安全授权。有关方法,请参考jps。

用户管理员jps192。168.146.1283346quorumpeermain3475JstatdC:usersadministratorjstat-gcutil3346@192。168.146.128S0S1东部奥姆CCSYGCYGCTFGCFGCTGCT52.970.0065.1513.9297.3998.0280.020

JVM性能调优有很多设置,参考JVM参数即可。

[XY001]主要调谐目的:

控制GC的行为。GC是一个后台进程,但是它也消耗系统的性能,所以GC的行为往往会根据系统运行的程序的特性而改变

控制JVM堆栈大小。一般来说,你不会';不需要修改JVM'的内存分配,(例如)。但是,当你的程序在一定时间内有很多新生代对象时,你就需要控制新生代的堆大小。同时,您需要控制JVM的总大小,以避免内存溢出。

控制JVM线程的内存分配。如果是多线程程序,线程消耗的内存和线程运行也是可以控制的,最优的结果需要经过一定时间的观察才能配置出来。

JVM调优的目的是减少gc次数,缩短gc时间。

从这两个维度优化。

倍:增加jvm内存空间,长时间持有对象,直接进入老年等。

时间:增强物理机性能或采用更好的gc收集器

如何调优jvm是很多人头疼的问题,尤其是在理解与现实的冲突中。如何对JVM进行调优,从什么方面入手,产生什么样的效果也是面临的类似问题。

相关内容

如何调优jvm[如何从什么开始调优JVM,效果如何]文档下载: PDF DOC TXT
您可能感兴趣的文章
24h快讯
违法生育包括哪些情形,什么叫违法生育
一、教师如果违法计划生育会有什么处罚如果是教师,违反计划生育规定,应由计生机......
2024-04-05 法规
自残违法吗?自残算不算犯罪
一、教唆他人自残构成犯罪吗教唆他人自残有故意杀人的嫌疑,所以规劝大家不要以身......
2024-04-05 法规
新昌机动车违法?机动车违章处理时间限制
一、新昌货车通行证怎么办理1.办理新昌货车通行证是可行的。2.因为新昌货车通......
2024-04-05 法规
违法举报网站,公安干警违法举报平台
一、国家有奖举报平台以举报违章车辆为例,有奖举报平台如下:为加大监管力度,营......
2024-04-05 法规
查看更多