JVM系列之 -------------------- jvm调优
一、用到的jvm调优工具:jps、jstack、jmap、jhat、jstat、top,这些工具用来监控进程和Java堆栈信息。
1.jps(Java虚拟机进程状态工具),该工具可以用来查看进程名和pid,以及jvm的配置参数。
[code]jps -l 10369 sun.tools.jps.Jps
-l :操作是用来查看jvm下的Java进程pid和进程名
-q :只显示jvm下的pid
-m:显示传入main方法的args
-v :显示jvm的配置参数
[code]jps -v 10400 Jps -Denv.class.path=.:/usr/java/jdk1.8.0_171/lib/dt.jar:/usr/java/jdk1.8.0_171/lib/tools.jar -Dapplication.home=/usr/java/jdk1.8.0_171 -Xms8m
-Xms8m : 设置该进程的最小内存为8M
2.jstack (java堆栈) , 该工具可以用来监控Java进程内的线程的堆栈信息,该操作有3个参数,其功能如下
[code]Options: -F to force(强制) a thread dump. Use when jstack <pid> does not respond (process is hung) -m to print both java and native frames(帧) (mixed(混合) mode(模式)) -l long listing. Prints additional(额外) information about locks
一个定位问题的实例:
[code]1.查看进程pid :jps -l ,假设pid=12345 2.查看该进程中使用cpu资源最高的线程pid :top -Hp 12345 ,假设线程的pid=45678 3.计算该线程pid的十六进制 :printf "%x\n" 45678 , 假设为 :b26e 4.查看进程中指定线程的堆栈信息 :jstack 12345 | grep b26e 这样就可以定位到该进程是什么原因导致的cpu利用率过高
3.jmap (Java memory map) ,监控Java进程中的对象 ,jhat 和 jmap相似。
[code]Options: -heap 打印堆栈信息 -histo [:live] 打印类数据和内存占用信息,live为可选参数,表示只查看存货的对象 B byte C char D double F float I int J long Z boolean
4.jstat(java堆栈实时监控工具)
[code]-class 监控类加载 -compiler 监控即时编译 -gc 监控堆栈状态垃圾收集情况,gc日志中中的时间是以秒为单位 -gccapacity 监控堆栈容量 -gccause 监控gc原因 -gcnew 监控新生代gc -gcnewcapacity 监控新生代容量 -gcold 监控年老带gc -gcoldcapacity 监控年老带容量 jstat -gc 12345 5000:表示监控pid=12345的进程的gc,每5秒监控一次
二、查看cpu信息:cat /proc/cpuinfo(处理器cpu信息)
该查询可以看到processor的核心数等cpu信息
[code][root@huasuo-host ~]# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 42 model name : Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz stepping : 7 microcode : 0x29 cpu MHz : 799.749 cache size : 3072 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm arat pln pts bogomips : 4589.58 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 42 model name : Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz
三、jvm内存和设置
堆内存 = 年轻代 + 年老代 + 永久代
年轻代 = Eden区 + 两个survivor区
-Xmx2g :设置jvm的最大堆内存为2g
-Xms500m :设置jvm的最小堆内存为:500M
-survivorRatio=4 :设置Eden区和两个survivor区的容量比例为 4:3:3
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-Xloggc:file 在jvm的启动参数中添加该指令,设置讲gc日志打印到指定的file文件中
- 深入JVM系列(二)之GC机制、收集器与GC调优
- 深入JVM系列(二)之GC机制、收集器与GC调优
- jvm系列(七):jvm调优-工具篇
- Java系列笔记 - JVM监控与调优
- Java 性能优化系列之3.1[JVM调优]
- jvm系列(六):Java服务GC参数调优案例
- jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
- Java 性能优化系列之3.1[JVM调优]
- jvm系列(七):jvm调优-工具篇
- jvm系列(七):jvm调优-工具篇
- Java系列笔记2 - JVM监控与调优
- jvm原理及性能调优系列(jvm调优)
- jvm系列(七):jvm调优-工具篇
- Java系列笔记(4) - JVM监控与调优
- Java系列笔记(4) - JVM监控与调优
- jvm系列(六):jvm调优-从eclipse开始
- Java系列笔记(4) - JVM监控与调优
- JVM系列(五):JVM 配置常用参数和常用 GC 调优策略!
- 深入JVM系列(二)之GC机制、收集器与GC调优
- Java 性能优化系列之3.1[JVM调优]