`

JVM监测

    博客分类:
  • java
 
阅读更多

JAVA基础:JVM监测&工具探究:

提到的JVM参数的设置需要根据应用的特性来进行设置,每个参数的设置都需要对JVM进行长时间的监测,并不断进行调整才能找到最佳设置方案。本文将介绍如果通过工具及Java api来监测JVM的运行状态,并详细介绍各工具的使用方法。

需要监测的数据:(内存使用情况 谁使用了内存 GC的状况)

内存使用情况--heap&PermGen

@ 表示通过jmap –heap pid 可以获取的值

# 表示通过jstat –gcutil pid 可以获取的值

参数的查看可以通过多种方法 本文中只随机列出一种。

 

描述 最大值 当前值 报警值
堆内存 @Heap Configuration::MaxHeapSize
sum(eden+servivor+old)
sum(eden+servivor+old) 自设
非堆内存 sum(perm+native)  
Eden @Eden Space::capacity @Eden Space::used
Survivor0 @From Space::capacity @From Space::used
Survivor1 @To Space::capacity @To Space::used
New gen
(注意区别于Xmn参数设置)
@New Generation::capacity
Eden + 1 Survivor Space
@New Generation::used
Old gen @concurrent mark-sweep generation::capacity
(CMS是对old区的gc,所以此处即表示old gen)
@concurrent mark-sweep generation::capacity(CMS)::used 自设
Perm Gen @Perm Generation::capacity @Perm Generation::used 自设

 

内存使用情况--config

 

描述 配置值
MaxTenuringThreshold jinfo -flag MaxTenuringThreshold pid
MinHeapFreeRatio @Heap Configuration::MinHeapFreeRatio
MaxHeapFreeRatio @Heap Configuration::MaxHeapFreeRatio
new gen gc @using … in the new generation
old gen gc new gen gc声明下方
类总数统计 ??

 

内存使用情况—C heap

◆  top or ps aux

谁使用了内存

◆ Heap

jmap –histo

jmap –dump ,then mat

◆ C heap

google perftools

GC的状况

 

描述 收集次数 收集时间 应用暂停时间
Full GC #FGC #FGCT 设置-XX:+PrintGCApplicationStoppedTime后在日志中查看
Young GC #YGC #YGCT 同上

 

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintGCApplicationStoppedTime -Xloggc:logs/gc.log

 

常用工具介绍:jinfo jmap jstack jstat

jinfo

◆ 可以从一个给定的java进程或core文件或远程debug服务器上获取java配置信息。包括java系统属性及JVM参数(command line flags)。注意在jvm启动参数中没有配置的参数也可使用jinfo –flag xxx pid输出默认值(很有用,但貌似一些简写的参数查不出来)。

◆ 可以修改运行时的java 进程的opts。

◆ 只有solaris和linux的JDK版本里有。

◆ 使用方式可使用jinfo –h 查询。

jmap

观察运行中的jvm物理内存的占用情况。

如果连用SHELL jmap -histo pid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。

参数很简单,直接查看jmap -h

举例:

  1. jmap -heap pid  
  2. jmap -dump:format=b,file=heap.hprof <pid>  

dump文件可以通过MemoryAnalyzer分析查看.网址:http://www.eclipse.org/mat/,可以查看dump时对象数量,内存占用,线程情况等。

jmap -dump:live为啥会触发Full GC

jstack

观察jvm中当前所有线程的运行情况和线程当前状态

如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。目前只有在Solaris和Linux的JDK版本里面才有。

参数很简单,直接查看jstack -h

举例:

  1. jstack pid  

jstat

JVM监测工具(Java Virtual Machine Statistics Monitoring Tool)。利用了JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括各种堆和非堆的大小及其内存使用量、classloader、compiler、垃圾回收状况等。

举例:

  1. jstat –printcompilation -h10 3024 250 600 

每250毫秒打印一次,一共打印600次 每隔10行显示一次head

语法结构:

  1. Usage: jstat -help|-options  
  2. jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]  

参数介绍:

◆ -h n 每隔几行输出标题

◆ vmid VM的进程号,即当前运行的java进程号

◆ -t 在第一列显示自JVM启动以来的时间戳

◆ -J 修改java进程的参数。类似jinfo -flag <name>=<value>。例如-J-Xms48m 设置初始堆为48M。详见这里。这个参数挺有用的,可以在运行中调整参数以方便测试、监测。

◆ -option option为要检测的参数。参数列表可通过jstat –options 获取。下面将分别介绍每个参数及输出字段的含义。

 

class 统计class loader行为信息
compiler 统计编译行为信息
gc 统计jdk gc时heap信息
gccapacity 统计堆内存不同代的heap容量信息
gccause 统计gc的情况(同-gcutil)和引起gc的事件
gcnew 统计gc时新生代的信息(相比gcutil更详细)
gcnewcapacity 统计gc时新生代heap容量
gcold 统计gc时,老年区的情况
gcoldcapacity 统计gc时,老年区heap容量
gcpermcapacity 统计gc时,permanent区heap容量
gcutil 统计gc时,heap情况
printcompilation 统计编译行为信息

 

-class option:Class Loader Statistics

 

ColumnDescription
Loaded Number of classes loaded.
Bytes Number of Kbytes loaded.
Unloaded Number of classes unloaded.
Bytes Number of Kbytes unloaded.
Time Time spent performing class load and unload operations.

 

-compiler:HotSpot Just-In-Time Compiler Statistics

 

ColumnDescription
Compiled Number of compilation tasks performed.
Failed Number of compilation tasks that failed.
Invalid Number of compilation tasks that were invalidated.
Time Time spent performing compilation tasks.
FailedType Compile type of the last failed compilation.
FailedMethod Class name and method for the last failed compilation.

 

-gc Option:Garbage-collected heap statistics

 

ColumnDescription
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).
PC Current permanent space capacity (KB).
PU Permanent space utilization (KB).
YGC Number of young generation GC Events.
YGCT Young generation garbage collection time.
FGC Number of full GC events.
FGCT Full garbage collection time.
GCT Total garbage collection time.

 

-gccapacity Option:Memory Pool Generation and Space Capacities

 

ColumnDescription
NGCMN Minimum new generation capacity (KB).
NGCMX Maximum new generation capacity (KB).
NGC Current new generation capacity (KB).
S0C Current survivor space 0 capacity (KB).
S1C Current survivor space 1 capacity (KB).
EC Current eden space capacity (KB).
OGCMN Minimum old generation capacity (KB).
OGCMX Maximum old generation capacity (KB).
OGC Current old generation capacity (KB).
OC Current old space capacity (KB).
PGCMN Minimum permanent generation capacity (KB).
PGCMX Maximum Permanent generation capacity (KB).
PGC Current Permanent generation capacity (KB).
PC Current Permanent space capacity (KB).
YGC Number of Young generation GC Events.
FGC Number of Full GC Events.

 

-gccause Option:Garbage Collection Statistics, Including GC Events

 

ColumnDescription
LGCC Cause of last Garbage Collection.
 
GCC Cause of current Garbage Collection.
 

 

前面的字段与gcutil相同.

-gcnew Option:New Generation Statistics

 

ColumnDescription
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).
TT Tenuring threshold.
MTT Maximum tenuring threshold.
DSS Desired survivor size (KB).
EC Current eden space capacity (KB).
EU Eden space utilization (KB).
YGC Number of young generation GC events.
YGCT Young generation garbage collection time.

 

-gcnewcapacity Option:New Generation Space Size Statistics

 

ColumnDescription
NGCMN
 
Minimum new generation capacity (KB).
 
NGCMX Maximum new generation capacity (KB).
NGC Current new generation capacity (KB).
S0CMX Maximum survivor space 0 capacity (KB).
S0C Current survivor space 0 capacity (KB).
S1CMX Maximum survivor space 1 capacity (KB).
S1C Current survivor space 1 capacity (KB).
ECMX Maximum eden space capacity (KB).
EC Current eden space capacity (KB).
YGC Number of young generation GC events.
FGC Number of Full GC Events.

 

-gcold Option:Old and Permanent Generation Statistics

 

ColumnDescription
PC Current permanent space capacity (KB).
PU Permanent space utilization (KB).
OC Current old space capacity (KB).
OU old space utilization (KB).
YGC Number of young generation GC events.
FGC Number of full GC events.
FGCT Full garbage collection time.
GCT Total garbage collection time.

 

-gcoldcapacity Option:Old Generation Statistics

 

ColumnDescription
OGCMN Minimum old generation capacity (KB).
OGCMX Maximum old generation capacity (KB).
OGC Current old generation capacity (KB).
OC Current old space capacity (KB).
YGC Number of young generation GC events.
FGC Number of full GC events.
FGCT Full garbage collection time.
GCT Total garbage collection time.

 

-gcpermcapacity Option: Permanent Generation Statistics

 

ColumnDescription
PGCMN Minimum permanent generation capacity (KB).
PGCMX Maximum permanent generation capacity (KB).
PGC Current permanent generation capacity (KB).
PC Current permanent space capacity (KB).
YGC Number of young generation GC events.
FGC Number of full GC events.
FGCT Full garbage collection time.
GCT Total garbage collection time.

 

-gcutil Option:Summary of Garbage Collection Statistics

 

ColumnDescription
S0 Survivor space 0 utilization as a percentage of the space's current capacity.
S1 Survivor space 1 utilization as a percentage of the space's current capacity.
E Eden space utilization as a percentage of the space's current capacity.
O Old space utilization as a percentage of the space's current capacity.
P Permanent space utilization as a percentage of the space's current capacity.
YGC Number of young generation GC events.
YGCT Young generation garbage collection time.
FGC Number of full GC events.
FGCT Full garbage collection time.
GCT Total garbage collection time.

 

-printcompilation Option: HotSpot Compiler Method Statistics

 

ColumnDescription
Compiled Number of compilation tasks performed.
Size Number of bytes of bytecode for the method.
Type Compilation type.
Method Class name and method name identifying the compiled method. Class name uses "/" instead of "." as namespace separator. Method name is the method within the given class. The format for these two fields is consistent with the HotSpot - XX:+PrintComplation option.
分享到:
评论

相关推荐

    监测JVM各项性能指标

    为了确保应用的高效运行和优化,开发者需要了解如何监测JVM的各项性能指标。JVM自带了一些工具,可以帮助我们监控内存使用、网络状况以及其它关键性能数据。下面将详细讨论这些知识点。 1. **JVM监控工具** - **...

    分享:JVM及其性能调优,欢迎交流

    4. **JVM监测工具**: 使用JVM内置的JConsole、VisualVM或者第三方工具如JProfiler,可以实时监控JVM的内存使用、线程状态、CPU负载等信息,帮助诊断性能问题。 5. **Linux监测工具**: 在Linux环境中,可以通过...

    JVM性能监测及调优实战

    JVM性能监测及调优实战 在 Java 开发中,内存溢出或内存使用率过高的问题非常常见。面对多个进程以及大量业务线程,我们需要精准地找到背后的原因。为此,我们需要使用一些实用的监控和诊断内存工具来辅助我们监测...

    JVM命令行监测工具详解

    JVM(Java Virtual Machine)是Java程序运行的核心,它负责解析和执行Java字节码。为了监控和调试JVM的运行状态,Oracle提供了多个命令行工具,包括jps、jstack、jstat、jmap和jcmd。这些工具可以帮助开发者了解和...

    visualvm_201.zip

    1. **JVM监测**:VisualVM提供了实时的JVM性能指标,如CPU使用率、堆内存使用、垃圾收集情况等。这些数据对于识别和解决性能瓶颈至关重要。 2. **线程分析**:通过VisualVM,用户可以查看当前运行的线程,分析死锁...

    idea插件JVM内存工具JProfiler11

    4. **CPU性能分析**:除了内存,JProfiler11还能监测CPU使用情况,找出性能瓶颈,分析方法调用树,帮助优化代码执行效率。 5. **JVM配置调整**:JProfiler11还可以提供JVM参数建议,帮助开发者正确设置JVM初始堆...

    jprofile配置实例.rar

    5. **JVM监测**:监控JVM的垃圾收集、类加载、系统属性等。 六、实践案例 在提供的压缩包文件中,有两个Word文档,很可能是详细的配置步骤或使用案例说明。读者可以通过打开这些文档,按照其中的指导一步步操作,...

    jvm常用命令工具

    通过使用上述工具,我们可以监测程序在运行过程中的内存消耗情况、线程活动情况以及垃圾回收行为等。 ### 结论 通过本文介绍的JVM命令工具,我们可以有效地监控和诊断Java应用程序的问题,从而提升应用的整体性能...

    JVM成神之路.rar

    JVM中的GC负责监测和回收不再使用的对象,防止内存泄漏。常见的GC算法有标记-清除、复制、标记-整理和分代收集等。 5. **硬件和操作系统的接口**:JVM抽象化了底层硬件和操作系统,使得Java应用程序具有跨平台性。 ...

    JVM知识图谱.pdf

    - **方法调用频率**:监测方法调用次数,超过一定阈值视为热点。 - **执行时间**:计算方法执行时间,超过阈值视为热点。 #### 十一、编译为本地代码 - **过程**:JIT编译器将热点代码编译成特定平台的机器码。 - ...

    jvm-profiler,jvm分析器向kafka、控制台输出或自定义报告器发送度量.zip

    JVM分析器的主要目标是对JVM的内存使用、CPU消耗、线程活动、类加载情况等进行实时监测,以便于定位性能瓶颈和内存泄漏等问题。在这个项目中,它特别关注了Hadoop和Spark这样的大数据处理框架,这些框架在JVM上运行...

    在JVM5.0中调配Garbage Collection

    通过定期监测Throughput Collector的性能指标,可以了解其运行状况,并据此进行相应的调整。 ##### 5.3 何时使用Concurrent Low Pause Collector Concurrent Low Pause Collector适用于那些对应用响应时间有较高...

    jvm调优实用工具.rar

    同时,它支持远程连接,可以在不修改代码的情况下对生产环境的JVM进行无侵入式的性能监测。 在进行JVM调优时,通常需要关注以下几个关键点: 1. **内存设置**:包括堆内存(Heap Memory)、非堆内存(Non-Heap ...

    jvm 调优笔记-jvm.zip

    - **热点代码识别**:JVM会监测哪些代码被频繁执行,然后编译为机器码,提高执行效率。 - **代码优化**:包括循环展开、逃逸分析等,减少运行时的开销。 8. **内存泄漏检测** - 长生命周期的对象持有短生命周期...

    jvm基础知识与调优-jvm-training.zip

    - 性能监控:使用VisualVM、JProfiler等工具监测CPU、内存、线程等状态。 5. **类加载机制** - 双亲委派模型:类加载请求会向上委托至父类加载器,避免类的重复加载。 - 自定义类加载器:可以扩展JVM的类加载...

    JVM Mechanics

    2. **热点探测** (Profile):在运行过程中,JVM会持续监测代码的执行情况,识别出热点代码(即频繁执行的代码片段)。 3. **即时编译** (Just-in-Time Compilation):一旦识别出热点代码,JVM将这些代码转换为更高效...

    Java-JVM调优总结

    ### Java-JVM调优总结 #### 一、引言 ...同时,利用各种监控工具定期对应用进行性能监测,也是确保系统稳定运行的重要手段之一。希望本文能够帮助开发者更好地理解和掌握 JVM 调优的关键技术和实践方法。

    了解jvm

    2. 性能监控:使用JVisualVM、JConsole等工具监测CPU、内存、线程等运行状态。 3. 内存泄漏检测:利用内存分析工具,如MAT(Memory Analyzer Tool),找出内存泄漏原因。 4. 热点代码优化:JIT编译器(Just-In-Time ...

Global site tag (gtag.js) - Google Analytics