Java 虚拟机指令和jvm参数

1、jps:虚拟机进程状况工具。(JVM Process Status)

使用频率最高的JDK命令行工具,用于显示进程id。
命令格式:jps [options ] [ hostid ]
[options]选项 :
-q:仅输出VM标识符,不包括classname,jar name,arguments in main method
-m:输出main method的参数
-l:输出完全的包名,应用主类名,jar的完全路径名
-v:输出jvm参数
java程序在启动以后,会在java.io.tmpdir指定的目录下,就是临时文件夹里,生成一个类似于hsperfdata_User的文件夹,这个文件夹里(在Linux中为/tmp/hsperfdata_{userName}/),有几个文件,名字就是java进程的pid,因此列出当前运行的java进程,只是把这个目录里的文件名列一下而已。 至于系统的参数什么,就可以解析这几个文件获得。
所以java进程启动时,若没有指定 -Djava.io.tmpdir参数,则会默认新建 /tmp/hsperfdata_KaTeX parse error: Expected group after '_' at position 114: …/tmp/hsperfdata_̲{user_name} 文件。
jps不能正常工作,可能存在的原因:

  1. 启动tomcat的java与jps不同版本
  2. jps 因为权限问题无法读取 /tmp/hsperfdata_${user_name} 文件
  3. java进程启动时指定 -Djava.io.tmpdir参数,即不采用默认值
    jps仅查找当前用户的Java进程,而不是当前系统中的所有进程
    常用方式:jps -vm

2、jstat:虚拟机统计信息监控工具,包括类装载、内存、垃圾收集、JIT编译等运行数据。

-class用于查看类加载情况的统计
-compiler用于查看HotSpot中即时编译器编译情况的统计
-gc用于查看JVM中堆的垃圾收集情况的统计
-gcutil用于查看新生代、老年代和持久代垃圾收集情况
常用命令:
jstat -gc 7417 1s 10
其中7417为线程id,1s为统计间隔,10为统计次数
在这里插入图片描述
各列意义:

S0C:年轻代中第一个存活区的大小
S1C:年轻代中第二个存活区的大小
S0U:年轻代中第一个存活区已使用的空间 (字节)
S1U:年轻代中第二个存活区已使用的空间 (字节)
EC: Edem区大小
EU: 年轻代中Edem区已使用的空间 (字节)
OC: 老年代大小
OU: 老年代已使用的空间 (字节)
PC: 持久代大小
PU: 持久代已使用的空间 (字节)
YGC: 从应用程序启动到采样时young gc的次数
YGCT: 从应用程序启动到采样时young gc的所用的时间(s)
FGC: 从应用程序启动到采样时full gc的次数
FGCT: 从应用程序启动到采样时full gc的所用的时间
GCT: 从应用程序启动到采样时整个gc所用的时间

3、jinfo:Java配置信息工具

-flags 进程id,查看此java进程的vm的flags

4、jmap:Java内存印象工具,用于生成堆转存储快照

-heap 打印heap的概要信息,GC使用的算法,heap的配置以及wise heap的使用情况。
-dump生成Java堆转存储快照
-histo显示堆中对象统计信息,包括类、实例数量、合计容量
-permstat永久带内存状态(每次试都超时)
这个比较常用
jmap -heap 进程id
jmap -histo 进程id | head -10

5、jstack:Java堆栈跟踪工具。生成虚拟机当前时刻的线程快照。

可视化工具
JConsole:Java监控与管理控制台。基于JMX的可视化监视、管理工具。
VisualVM:多合一故障处理工具。目前最强大的工具。

堆设置
- -Xms:初始堆大小
- -Xmx:最大堆大小
- -XX:NewSize=n:设置年轻代大小
- -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
- -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
- -XX:MaxPermSize=n:设置持久代大小
收集器设置
- -XX:+UseSerialGC:设置串行收集器
- -XX:+UseParallelGC:设置并行收集器
- -XX:+UseParalledlOldGC:设置并行年老代收集器
- -XX:+UseConcMarkSweepGC:设置并发收集器
垃圾回收统计信息
- -XX:+PrintGC
- -XX:+PrintGCDetails
- -XX:+PrintGCTimeStamps
- -Xloggc:filename
并行收集器设置
- -XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
- -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
- -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
并发收集器设置
-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。

Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。
JProfiler:商业软件,需要付费。功能强大。
VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。
线程监控,内存泄漏检查,内存分配情况,快照功能

常用排行榜
jps -vm
jstack 进程id
jmap -histo 进程id | head -30
jmap -heap 进程id
jstat -gcutil 进程id

6、javap反编译指令

用法: javap
其中, 可能的选项包括:
-help --help -? 输出此用法消息
-version 版本信息
-v -verbose 输出附加信息
-l 输出行号和本地变量表
-public 仅显示公共类和成员
-protected 显示受保护的/公共类和成员
-package 显示程序包/受保护的/公共类
和成员 (默认)
-p -private 显示所有类和成员
-c 对代码进行反汇编
-s 输出内部类型签名
-sysinfo 显示正在处理的类的
系统信息 (路径, 大小, 日期, MD5 散列)
-constants 显示最终常量
-classpath 指定查找用户类文件的位置
-cp 指定查找用户类文件的位置
-bootclasspath 覆盖引导类文件的位置

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值