偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

JVM基礎(chǔ):JVM監(jiān)測(cè)&工具

開發(fā) 后端
本文將介紹如果通過(guò)工具及Java api來(lái)監(jiān)測(cè)JVM的運(yùn)行狀態(tài),并詳細(xì)介紹各工具的使用方法。詳細(xì)請(qǐng)看下文。

前幾篇篇文章介紹了介紹了JVM的參數(shù)設(shè)置并給出了一些生產(chǎn)環(huán)境的JVM參數(shù)配置參考方案。正如之前文章中提到的JVM參數(shù)的設(shè)置需要根據(jù)應(yīng)用的特性來(lái)進(jìn)行設(shè)置,每個(gè)參數(shù)的設(shè)置都需要對(duì)JVM進(jìn)行長(zhǎng)時(shí)間的監(jiān)測(cè),并不斷進(jìn)行調(diào)整才能找到***設(shè)置方案。本文將介紹如果通過(guò)工具及Java api來(lái)監(jiān)測(cè)JVM的運(yùn)行狀態(tài),并詳細(xì)介紹各工具的使用方法。

需要監(jiān)測(cè)的數(shù)據(jù):(內(nèi)存使用情況 誰(shuí)使用了內(nèi)存 GC的狀況)

內(nèi)存使用情況--heap&PermGen

@ 表示通過(guò)jmap –heap pid 可以獲取的值

# 表示通過(guò)jstat –gcutil pid 可以獲取的值

參數(shù)的查看可以通過(guò)多種方法 本文中只隨機(jī)列出一種。

描述 ***值 當(dāng)前值 報(bào)警值
堆內(nèi)存 @Heap Configuration::MaxHeapSize
sum(eden+servivor+old)
sum(eden+servivor+old) 自設(shè)
非堆內(nèi)存 sum(perm+native)   無(wú)
Eden @Eden Space::capacity @Eden Space::used 無(wú)
Survivor0 @From Space::capacity @From Space::used 無(wú)
Survivor1 @To Space::capacity @To Space::used 無(wú)
New gen
(注意區(qū)別于Xmn參數(shù)設(shè)置)
@New Generation::capacity
Eden + 1 Survivor Space
@New Generation::used 無(wú)
Old gen @concurrent mark-sweep generation::capacity
(CMS是對(duì)old區(qū)的gc,所以此處即表示old gen)
@concurrent mark-sweep generation::capacity(CMS)::used 自設(shè)
Perm Gen @Perm Generation::capacity @Perm Generation::used 自設(shè)

內(nèi)存使用情況--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聲明下方
類總數(shù)統(tǒng)計(jì) ??

內(nèi)存使用情況—C heap

◆  top or ps aux

誰(shuí)使用了內(nèi)存

◆ Heap

jmap –histo

jmap –dump ,then mat

◆ C heap

google perftools

GC的狀況

描述 收集次數(shù) 收集時(shí)間 應(yīng)用暫停時(shí)間
Full GC #FGC #FGCT 設(shè)置-XX:+PrintGCApplicationStoppedTime后在日志中查看
Young GC #YGC #YGCT 同上

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

 

常用工具介紹:jinfo jmap jstack jstat

jinfo

◆ 可以從一個(gè)給定的java進(jìn)程或core文件或遠(yuǎn)程debug服務(wù)器上獲取java配置信息。包括java系統(tǒng)屬性及JVM參數(shù)(command line flags)。注意在jvm啟動(dòng)參數(shù)中沒有配置的參數(shù)也可使用jinfo –flag xxx pid輸出默認(rèn)值(很有用,但貌似一些簡(jiǎn)寫的參數(shù)查不出來(lái))。

◆ 可以修改運(yùn)行時(shí)的java 進(jìn)程的opts。

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

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

jmap

觀察運(yùn)行中的jvm物理內(nèi)存的占用情況。

如果連用SHELL jmap -histo pid>a.log可以將其保存到文本中去,在一段時(shí)間后,使用文本對(duì)比工具,可以對(duì)比出GC回收了哪些對(duì)象。

參數(shù)很簡(jiǎn)單,直接查看jmap -h

舉例:

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

dump文件可以通過(guò)MemoryAnalyzer分析查看.網(wǎng)址:http://www.eclipse.org/mat/,可以查看dump時(shí)對(duì)象數(shù)量,內(nèi)存占用,線程情況等。

jmap -dump:live為啥會(huì)觸發(fā)Full GC

jstack

觀察jvm中當(dāng)前所有線程的運(yùn)行情況和線程當(dāng)前狀態(tài)

如果java程序崩潰生成core文件,jstack工具可以用來(lái)獲得core文件的java stack和native stack的信息,從而可以輕松地知道java程序是如何崩潰和在程序何處發(fā)生問(wèn)題。另外,jstack工具還可以附屬到正在運(yùn)行的java程序中,看到當(dāng)時(shí)運(yùn)行的java程序的java stack和native stack的信息, 如果現(xiàn)在運(yùn)行的java程序呈現(xiàn)hung的狀態(tài),jstack是非常有用的。目前只有在Solaris和Linux的JDK版本里面才有。

參數(shù)很簡(jiǎn)單,直接查看jstack -h

舉例:

  1. jstack pid  

jstat

JVM監(jiān)測(cè)工具(Java Virtual Machine Statistics Monitoring Tool)。利用了JVM內(nèi)建的指令對(duì)Java應(yīng)用程序的資源和性能進(jìn)行實(shí)時(shí)的命令行的監(jiān)控,包括各種堆和非堆的大小及其內(nèi)存使用量、classloader、compiler、垃圾回收狀況等。

舉例:

  1. jstat –printcompilation -h10 3024 250 600 

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

語(yǔ)法結(jié)構(gòu):

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

參數(shù)介紹:

◆ -h n 每隔幾行輸出標(biāo)題

◆ vmid VM的進(jìn)程號(hào),即當(dāng)前運(yùn)行的java進(jìn)程號(hào)

◆ -t 在***列顯示自JVM啟動(dòng)以來(lái)的時(shí)間戳

◆ -J 修改java進(jìn)程的參數(shù)。類似jinfo -flag <name>=<value>。例如-J-Xms48m 設(shè)置初始堆為48M。詳見這里。這個(gè)參數(shù)挺有用的,可以在運(yùn)行中調(diào)整參數(shù)以方便測(cè)試、監(jiān)測(cè)。

◆ -option option為要檢測(cè)的參數(shù)。參數(shù)列表可通過(guò)jstat –options 獲取。下面將分別介紹每個(gè)參數(shù)及輸出字段的含義。

class 統(tǒng)計(jì)class loader行為信息
compiler 統(tǒng)計(jì)編譯行為信息
gc 統(tǒng)計(jì)jdk gc時(shí)heap信息
gccapacity 統(tǒng)計(jì)堆內(nèi)存不同代的heap容量信息
gccause 統(tǒng)計(jì)gc的情況(同-gcutil)和引起gc的事件
gcnew 統(tǒng)計(jì)gc時(shí)新生代的信息(相比gcutil更詳細(xì))
gcnewcapacity 統(tǒng)計(jì)gc時(shí)新生代heap容量
gcold 統(tǒng)計(jì)gc時(shí),老年區(qū)的情況
gcoldcapacity 統(tǒng)計(jì)gc時(shí),老年區(qū)heap容量
gcpermcapacity 統(tǒng)計(jì)gc時(shí),permanent區(qū)heap容量
gcutil 統(tǒng)計(jì)gc時(shí),heap情況
printcompilation 統(tǒng)計(jì)編譯行為信息

-class option:Class Loader Statistics

Column Description
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

Column Description
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

Column Description
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

Column Description
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

Column Description
LGCC Cause of last Garbage Collection.
 
GCC Cause of current Garbage Collection.
 

前面的字段與gcutil相同.

-gcnew Option:New Generation Statistics

Column Description
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

Column Description
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

Column Description
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

Column Description
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

Column Description
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

Column Description
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

Column Description
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.

Java api方式監(jiān)測(cè)

jre中提供了一些查看運(yùn)行中的jvm內(nèi)部信息的api,這些api包含在java.lang.management包中,此包中的接口是在jdk 5中引入的,所以只有在jdk 5及其以上版本中才能通過(guò)這種方式訪問(wèn)這些信息。下面簡(jiǎn)單介紹一下這包括哪些信息,以及如何訪問(wèn)。

可以通過(guò)此api訪問(wèn)到運(yùn)行中的jvm的類加載的信息、jit編譯器的信息、內(nèi)存分配的情況、線程的相關(guān)信息以及運(yùn)行jvm的操作系統(tǒng)的信息。java.lang.management包中提供了9個(gè)接口來(lái)訪問(wèn)這些信息,使用ManagementFactory的靜態(tài)get方法可以獲得相應(yīng)接口的實(shí)例,可以通過(guò)這些實(shí)例來(lái)獲取你需要的相關(guān)信息。

更詳細(xì)的關(guān)于MBean的介紹參見Java SE 6 新特性: JMX 與系統(tǒng)管理

demo1:查看一下當(dāng)前運(yùn)行的jvm中加載了多少個(gè)類。想詳細(xì)了解如何使用這些api,可以參考java.lang.management包中的詳細(xì)api文檔。

  1. public class ClassLoaderChecker {  
  2.     public static void main( String[] args ) throws Exception {  
  3.       ClassLoadingMXBean bean = ManagementFactory.getClassLoadingMXBean();  
  4.       System.out.println( bean.getLoadedClassCount() );  
  5.     }  

demo2:自定義Mbean Type,記錄的數(shù)據(jù)可通過(guò)jconsole等工具或自寫代碼查看,

  1. //工具方法  
  2. public static ObjectName register(String name, Object mbean) {  
  3.         try {  
  4.             ObjectName objectName = new ObjectName(name);  
  5.             MBeanServer mbeanServer = ManagementFactory  
  6.                     .getPlatformMBeanServer();  
  7.             try {  
  8.                 mbeanServer.registerMBean(mbean, objectName);  
  9.             } catch (InstanceAlreadyExistsException ex) {  
  10.                 mbeanServer.unregisterMBean(objectName);  
  11.                 mbeanServer.registerMBean(mbean, objectName);  
  12.             }  
  13.             return objectName;  
  14.         } catch (JMException e) {  
  15.             throw new IllegalArgumentException(name, e);  
  16.         }  
  17. }  
  18. //步驟一:定義Mbean接口:  
  19. //隨便定義  
  20. public interface DemoMBean {  
  21.       public AtomicLong getInvokeCount();  
  22. }  
  23. //步驟二:實(shí)現(xiàn)接口,并注冊(cè):  
  24. public class DemoImpl implements DemoMBean{  
  25.       public final static String DEFAULT_OBJECT_NAME_PREFIX = "com.redcreen.demo:type=demo";  
  26.       register("com.redcreen.demo:type=demo",DemoImpl.instance);  
  27. }  
  28. //可以通過(guò)jconsole中查看數(shù)據(jù)了 

相關(guān)推薦文章:

在 Java SE 6 中監(jiān)視和診斷性能問(wèn)題

參考:

http://www.51testing.com/?uid-183198-action-viewspace-itemid-185174

JVM監(jiān)控工具介紹jstack, jconsole, jinfo, jmap, jdb, jstat

http://stl-www.htw-saarland.de/syst-lab/java/jdk-1_5_0/docs/tooldocs/share/jinfo.html

http://qa.taobao.com/?p=10010

運(yùn)用Jconsole監(jiān)控JVM

http://www.coderanch.com/t/329407/java/java/find-all-loaded-classes-classloaders

原文鏈接:http://www.cnblogs.com/redcreen/archive/2011/05/09/2040977.html

【系列文章】

  1. JVM基礎(chǔ):JVM內(nèi)存組成及分配
  2. JVM基礎(chǔ):GC策略&內(nèi)存申請(qǐng)、對(duì)象衰老
  3. JVM基礎(chǔ):JVM參數(shù)設(shè)置、分析
  4. JVM基礎(chǔ):生產(chǎn)環(huán)境參數(shù)實(shí)例及分析
責(zé)任編輯:林師授 來(lái)源: redcreen的博客
相關(guān)推薦

2010-09-27 08:38:49

JVM堆JVM棧

2012-01-11 11:28:00

JavaJVM

2012-01-11 10:45:57

JavaJVM

2017-10-17 14:02:30

jvm調(diào)優(yōu)工具

2010-09-27 09:01:26

JVM分代垃圾回收

2020-10-12 18:08:19

JVM技能工具

2011-07-05 10:39:55

JVM

2011-06-22 12:57:54

JVM

2010-09-27 15:39:37

JVM監(jiān)控工具

2021-07-08 06:47:19

JVM監(jiān)控工具

2025-03-31 00:00:02

2021-08-09 16:39:52

工具JVM剖析

2010-09-27 15:54:19

JVM監(jiān)控工具

2025-09-08 00:12:27

2010-09-26 09:16:16

JVM監(jiān)控工具

2017-09-20 08:48:09

JVM內(nèi)存結(jié)構(gòu)

2022-05-27 08:01:36

JVM內(nèi)存收集器

2022-10-25 08:28:46

JVM分析工具JDK

2012-03-02 14:20:46

JavaJVM

2010-09-26 16:55:31

JVM學(xué)習(xí)筆記
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)