JVM监测常用命令

基于内存模型调优

    JVM调优 计算内存模型大小 掌握、掌握、掌握这个是JVM优化的基础,jmap -heap   进程号 查看堆内存使用情况,记住理解下图,下面优化庖丁解牛了

开始整

JVM调优 :

jstat -jcutil + 进程编号

jmap histo: live +进程编号|head -n 20  打印堆栈前二十个

jinfo

查看JVM运行时的参数 : jinfo -flags  进程号 

高亮显示程序端口号 :     jinfo -flags      进程号 |grep port

查看系统的参数                 jinfo sysprops  进程号

jstat

jstat -class  进程号  查看程序class大小

jstat -gc  进程号  查看gc

新生代gc回收 :jstat -gcnew  进程号

老年代gc回收 :   jstat -gcold  进程号

元空间gc回收 :jstat -gcmetacapacity  进程号

查看垃圾回收: jstat -gcutil  进程号 1000 3 11666为pid,每隔1000毫秒打印一次,打印3次

jmap常用

jmap -heap 进程 打印堆栈信息

jmap -histo  进程号 > ./log.txt 查看实例对象占内存大小

jmap -histo:live 进程号 显示堆中对象的统计信息

命令:jmap -clstats 进程标号 描述:打印类加载器信息

命令:jmap -finalizerinfo 进程标号 描述:打印等待终结的对象信息

jmap -histo:live 4117| head -n 10 打印系统中占堆内存比最大类

java VisulVm 内存检测工具

图形化界面 :数据是同过JDK内的命令做的展示 : Jinfo Jstat

内存溢出 :生产上所加的参数 printGCDetails

打印内存溢出信息到指定文件: -XX: +HeapDumpOnOutOfMemoryError -XX: HeapDumpPath=:\jvm.dump

会生成内存快照 jvm.dump 

注意:此命令尽量别再生产下搞,本地玩玩就行了,此过程会导致stop-the-world,一般dump文件也比较大,只有系统崩溃时,起到黑匣子作用。

printGCDetails : 打印指定时段的对内存信息

jstack 查看死锁

jstack + 进程编号

在jvisulVm直接dump下来就行了

查看程序持续时间:ps -eo pid,tty,user,comm,lstart,etime | grep 14121

GC常用参数

堆栈设置

  -Xss:每个线程的栈大小

  -Xms:初始堆大小,默认物理内存的1/64

  -Xmx:最大堆大小,默认物理内存的1/4

  -Xmn:新生代大小 默认占用堆内存1/3

  -XX:NewSize:设置新生代初始大小

  -XX:NewRatio:默认2表示新生代占年老代的1/2,占整个堆内存的1/3。

  -XX:SurvivorRatio:默认8表示一个survivor区占用1/8的Eden内存,即1/10的新生代内存。

 -XX:MetaspaceSize:设置元空间大小 目前项目未设置

  -XX:MaxMetaspaceSize:设置元空间最大允许大小,默认不受限制,JVM Metaspace会进行动态扩展。

垃圾回收统计信息

  -XX:+PrintGC

  -XX:+PrintGCDetails

  -XX:+PrintGCTimeStamps

  -Xloggc:filename

收集器设置

  -XX:+UseSerialGC:设置串行收集器

  -XX:+UseParallelGC:设置并行收集器

  -XX:+UseParallelOldGC:老年代使用并行回收收集器

  -XX:+UseParNewGC:在新生代使用并行收集器

  -XX:+UseParalledlOldGC:设置并行老年代收集器

  -XX:+UseConcMarkSweepGC:设置CMS并发收集器

  -XX:+UseG1GC:设置G1收集器

  -XX:ParallelGCThreads:设置用于垃圾回收的线程数

并行收集器设置

  -XX:ParallelGCThreads:设置并行收集器收集时使用的CPU数。并行收集线程数。

  -XX:MaxGCPauseMillis:设置并行收集最大暂停时间

  -XX:GCTimeRatio:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

CMS收集器设置

  -XX:+UseConcMarkSweepGC:设置CMS并发收集器

  -XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。

  -XX:ParallelGCThreads:设置并发收集器新生代收集方式为并行收集时,使用的CPU数。并行收集线程数。

  -XX:CMSFullGCsBeforeCompaction:设定进行多少次CMS垃圾回收后,进行一次内存压缩

  -XX:+CMSClassUnloadingEnabled:允许对类元数据进行回收

  -XX:UseCMSInitiatingOccupancyOnly:表示只在到达阀值的时候,才进行CMS回收

  -XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况

  -XX:ParallelCMSThreads:设定CMS的线程数量

  -XX:CMSInitiatingOccupancyFraction:设置CMS收集器在老年代空间被使用多少后触发

  -XX:+UseCMSCompactAtFullCollection:设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片的整理

G1收集器设置

  -XX:+UseG1GC:使用G1收集器

  -XX:ParallelGCThreads:指定GC工作的线程数量

  -XX:G1HeapRegionSize:指定分区大小(1MB~32MB,且必须是2的幂),默认将整堆划分为2048个分区

  -XX:GCTimeRatio:吞吐量大小,0-100的整数(默认9),值为n则系统将花费不超过1/(1+n)的时间用于垃圾收集

  -XX:MaxGCPauseMillis:目标暂停时间(默认200ms)

  -XX:G1NewSizePercent:新生代内存初始空间(默认整堆5%)

  -XX:G1MaxNewSizePercent:新生代内存最大空间

  -XX:TargetSurvivorRatio:Survivor填充容量(默认50%)

  -XX:MaxTenuringThreshold:最大任期阈值(默认15)

  -XX:InitiatingHeapOccupancyPercen:老年代占用空间超过整堆比IHOP阈值(默认45%),超过则执行混合收集

  -XX:G1HeapWastePercent:堆废物百分比(默认5%)

  -XX:G1MixedGCCountTarget:参数混合周期的最大总次数(默认8)

以上是我自己项目生产、测试环境中常用的一些命令,欢迎大家围观,有不对的及时指出,当然觉得不错的话来点赞也成。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值