首页 > 其他分享 >JVM调休小记

JVM调休小记

时间:2023-06-06 23:33:17浏览次数:57  
标签:采样 run 打印 application XX GC JVM 调休 小记

首先要明白为什么要进行JVM调优?

  • 对于高QPS(每秒查询率,一台服务器能够响应的查询请求的次数)的项目来说
  • 其将会在堆内存中高度频繁地创建对象,将会触发较为频繁的GC
  • 可以使用jstat命令查看GC的情况
  • jstat -gcutil pid 1000每隔1秒打印一次GC统计信息
  • 首先要找到java进程的pid
  • 通过内置的jps命令去找到pid
  • jps -p :仅输出 pid
  • jps -m : 输出传递给main方法的参数
  • jps -l : 输出主类的完整报名
  • jps -v :输出传递给JVM的参数
  • jstat命令执行结果
  • jstat -gc pid

code

解释

示例数据(单位:字节)

S0C

年轻代中第一个存活区的大小

1024.0

S1C

年轻代中第二个存活区的大小

1536.0

S0U

第一个存活区已用空间

0.0

S1U

第二个存活区已用空间

1024.6

EC

Eden区大小

48640.0

EU

年轻代已经使用Eden区的空间

6530.7

OC

老年代大小

330240.0

OU

老年代已经使用空间

150405.0

PC

永久代大小

177496.0

PU

永久代已经使用空间

171133.4

YGC

从application run到采样时ygc的次数

269

YGCT

从application run到采样时ygc所用的时间

(单位:s)7.096

FGC

从application run到采样时full gc的次数

5

FGCT

从application run到采样时full gc所用时间

(单位:s)1.017

GCT

从application run到采样整个GC用时

(单位:s)8.114

YGC单次GC平均耗时

  • YGCT/YGC = 0.0263 大约26ms

FGC单次GC平均耗时

  • FGCT/FGC = 0.2034 大约200ms

整体GC平均耗时

  • GCT/(YGC+FGC)

如何打印GC log

打印GC log需要在 JVM 启动参数中添加以下参数 -XX:+PrintGCDateStamps :打印GC发生时间戳 -XX:+PrintTenuringDistribution :打印GC发生时的分代信息 -XX:+PrintGCApplicationStoppedTime :打印GC停顿时长 -XX:+PrintGCApplicationConcurrentTime :打印GC间隔的服务运行时长 -XX:+PrintGCDetails :打印GC详情,包括GC前内存等 -XlogGC:../xxx/xxx :指定 GC log 的路径

可以使用 GCeasy 工具分析GC log https://GCeasy.io

参考

标签:采样,run,打印,application,XX,GC,JVM,调休,小记
From: https://blog.51cto.com/u_16079703/6428796

相关文章

  • JVM 运行时数据区域介绍
    Java的动态内存分配和垃圾回收机制使java程序员不用像C++程序员那么头疼内存的分配与回收。相信熟悉COM机制的朋友对于引用计数管理内存的方式深有感触。Java虚拟机的自动内存管理不仅降低了编码的难度而且不容易出现内存泄露和内存溢出的问题。但是这过于美好的愿景正是由于把内存......
  • 阿里云 arthas JVM 诊断工具常用命令记录
    看完快速入门再回来:https://arthas.aliyun.com/doc/quick-start.htmljad:https://arthas.aliyun.com/doc/jad.html反编译class文件,查看JVM加载的class文件源代码,类名后面跟一个空格加方法名可以单独反编译某一个方法源代码jadcom.geostar.geoonline.service_visit_log.d......
  • 4月7日严老师JVM面试资料
    JVM金三银四面试突击班21.JVM常用的参数有哪些?讲师:严镇涛标准参数-version-help-server-cp 3.1.2-X参数非标准参数,也就是在JDK各个版本中可能会变动-Xint    解释执行-Xcomp   第一次使用就编译成本地代码-Xmixed  混合模式,JVM自己来决定 3.1.3-XX参数......
  • 前缀和 & 技巧小记
    前缀和子数组的元素之和:一维前缀和子矩阵的元素之和:二维前缀和前缀和+哈希表:寻找和为target的子数组 子数组的元素之和:一维前缀和前缀和适用于快速、频繁地计算一个索引区间内的元素之和。intres=0;//存储区间[left,right]之和for(inti=left;i<=right;i++)......
  • JVM专栏-类加载的过程
    类加载的过程类加载过程包括5个阶段:加载、验证、准备、解析和初始化。加载加载的过程“加载”是“类加载”过程的一个阶段,不能混淆这两个名词。在加载阶段,虚拟机需要完成3件事:通过类的全限定名获取该类的二进制字节流。将二进制字节流所代表的静态结构转化为方法区的......
  • 【JavaScript】setTimeout 和 setInterval 小记
    项目setTimeoutsetInterval名称一次性定时器循环定时器相同在规定延迟时间再执行某个操作在规定延迟时间再执行某个操作区别只能定时一次可以一直循环执行下去......
  • JVM 诊断神器-Arthas实战
    什么是Arthas(阿尔萨斯)阿里开源的Java诊断工具,它可以在运行时对Java应用程序进行动态诊断和调试当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决这个类从哪个jar包加载的?为什么会报各种类相关的Exception?我改的代码为什么没有执行到?难道是我没commit?分支搞错......
  • 《数据结构》之栈和堆结构及JVM简析
    导言:在数据结构中,我们第一了解到了栈或堆栈,它的结构特点是什么呢?先进后出,它的特点有什么用呢?我们在哪里可以使用到栈结构,栈结构那么简单,使用这么久了为什么不用其它结构替代?一.程序在内存中的分布作为一个程序猿,我们应该会常常跟代码打交道,那么我们所编写的程序或代码,是怎么跑......
  • JVM-常用工具(jps、jstat、jinfo、jmap、jhat、jstack、jconsole、jvisualvm)使用
    场景记录JVM中常用工具。jps:虚拟机进程状态工具jps(JVMProcessStatusTool):虚拟机进程状态工具,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(MainClass,main()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID。命令格式:jps[options][hostid]示例:jps-l 选项:-q 只......
  • 设计模式小记
    创建型模式(CreationalPatterns):工厂模式(FactoryPattern):通过工厂方法创建对象,隐藏具体实现细节,例如创建不同类型的按钮。//简单工厂模式classButtonFactory{createButton(type){switch(type){case'submit':returnnewSubmitButton();......