当前位置: 首页 > 图灵资讯 > 技术篇> JVM调休小记

JVM调休小记

来源:图灵教育
时间:2023-06-07 09:40:07

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

  • 对于高QPS(每秒查询率,服务器可以响应的查询请求次数)的项目
  • 它将在堆内存中高度频繁地创建对象,并将触发更频繁的GC
  • 可以使用jstat命令查看GC的情况
  • jstat -gcutil pid 1000GC统计信息每隔1秒打印一次
  • 首先要找到java进程的pidd
  • 通过内置的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 采样时fulllun到fulll gc的次数

5

FGCT

application 采样时fulllun到fulll 使用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工具分析 loghttps://GCeasy.io

参考