JVM参数及其日志学习(三)

一、标准参数

使用所有版本
-version
-help
-server
-cp

>java -version
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)

二、非标准参数


1、-X参数


源码文件 >类文件 > 前端编译

-Xint 解释执行 
-Xcomp 第一次使用就编译成本地代码 
-Xmixed 混合模式,JVM自己来决定

2、-XX参数


使用得最多的参数类型 非标准化参数,相对不稳定,主要用于JVM调优和Debug
针对一个进程而言
-XX:name=value 表示对某个参数进行赋值
-XX:+/-name 启用或者禁用
比如:
-XX:+UseConcMarkSweepGC 表示启用CMS类型的垃圾回收器
-XX:+UseG1GC 表示启用G1类型的垃圾回收器
-XX:InitialHeapSize=1000M 表示初始化堆内存大小
-XX:MaxHeapSize=1000M 表示最大堆内存大小
-Xms1000M等价于-XX:InitialHeapSize=1000M
-Xmx1000M等价于-XX:MaxHeapSize=1000M
-Xss100等价于-XX:ThreadStackSize=100


3、查看JAVA进程中有哪些参数:


jps 查看JAVA线程
java -XX:+PrintFlagsFinal -version
查看参数是否使用 例子 :jinfo -flag UserG1GC 进程号


4、怎么设置JVM参数


idea、eclipse 运行
jar包的时候:java -jar -XX:InitialHeapSize=1000M
一般中间件比如:tomcat
WINDOW:catalina.bat
Liunx:catalina.sh
当程序跑起来的时候,还想调整怎么办:jinfo可以实时修改jvm参数的值。必须后面的标记是manageable。


5、JDK常用命令


1、jps查看当前JAVA进程 jps -l详情信息
2、jinfo 查看参数
      jinfo -flag PID :罗列出赋值修改过的值
3、jstat:java面向对象 类被加载到虚拟机中
	  类装载信息 jastat -class Pid
	  垃圾回收 jstat -gc PID
4、jstack:java进程线程的情况
	jstack PID
	应用程序发生死锁可以看到
5、jmap:生成堆存储的快照,堆当中的详情
	jmap -heap pid
	-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = heap.hprof//发生om自动导出

三、常用工具

某种意义上是对命令的封装



1、JDK自带



jvisualvm:在上一章JVM垃圾回收原理理解分享(二)
jconsole:JConsole工具是JDK自带的可视化监控工具。查看java应用程序的运行概况、监控堆信息、永久区使用
情况、类加载情况等。


2、第三方


arthas

arthas 下载地址
下载安装
curl -O https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
or
java -jar arthas-boot.jar -h # 然后可以选择一个Java进程


3、内存分析


获取报错日志文件
jmap -dump:format=b,file=heap.hprof 44808
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof

MAT
下载地址

Java堆分析器,用于查找内存泄漏 Heap Dump,称为堆转储文件,是Java进程在某个时间内的快照。
它在触发快照的时候保存了很多信息:Java对象和类信息。 通常在写Heap Dump文件前会触发一次Full GC。

heaphero(在线工具)
地址

perfma(在线工具)
地址

4、GC日志分析

要想分析日志的信息,得先拿到GC日志文件才行,所以得先配置一下,根据前面参数的学习,下
面的配置很容易看懂。比如打开windows中的catalina.bat,在第一行加上

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:$CATALINA_HOME/logs/gc.log

例如

2019-06-10T23:21:53.305+0800: 1.303: [GC (Allocation Failure)[PSYoungGen: 65536K[Young区回收前]-10748KYoung区回收后] 65536K[整个 堆回收前]->15039K整个堆回收后, 0.0113277 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]

留意:回收钱回收后怎么yong区大小不同:是old区释放的空间。

1、本地工具GCViewer
java -jar gcviewer-1.36-SNAPSHOT.jar

2、gceasy(在线工具)
地址

3、gcplot
地址

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值