jvm 垃圾回收

JVM主要管理两种类型的内存:堆和非堆(非堆即常说的栈)。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法 的代码都在非堆内存中
grafana
men_heap_used 堆当前使用的内存量
men_pool_used 

jstat:用于获取运行中的应用的性能和资源消耗信息,keyongyu诊断性能问题特别是与堆大小和垃圾手机相关的问题

jvm 垃圾回收

jstat -gc java_pid

说明

S0C

Current survivor space 0 capacity (KB)

S1C

Current survivor space 1 capacity (KB)

S0U

Survivor space 0 utilization (KB)

S1U

Survivor space 1 utilization (KB)

EC

Current eden space capacity (KB)

EU

Eden space utilization (KB)

OC

Current old space capacity (KB)

OU

Old space utilization (KB)

MC

Metasapce capacity (KB)

MU

Metaspace utilization (KB)

CCSC

Compressed class space capacity (KB)

CCSU

Compressed class space used (KB)

YGC

Number of young generation garbage collection events

YGCT

Young generation garbage collection time

FGC

Number of full GC events

FGCT

Full garbage collection time

GCT

Total garbage collection time

jmap 用于打印运行中的VM和核心文件的内存相关的统计数据,推荐使用jcmd替代jmap,增强诊断能力,减少性能开销

jmap -heap java_pid

jvm 垃圾回收

jcmd

-XX:+PrintGC
开启了简单的Gc日志模式

-XX:PrintGCDetails
开启详细的Gc模式

-XX:+PrintGCTimeStamps和-XX:+PrintGCDateStamps
将时间和日志加到Gc日志中

-Xloggc:也可以输出到指定的文件

jstat命令行工具监控jvm内存和垃圾回收,
jstat需要知道应用的进程id ps -eaf |greo java
ps -eaf |grep java.jar

jastat -gc 9582 10000 每隔一秒打印出内存和垃圾回收
jstat -gccause 7947 2s 

jmap 用于打印运行中的vm和核心文件的内存相关的统计数据
 jstat -gcutil pid

jps -lvm :列出本机所有的java进程的pid