import{_ as l}from"./arthas-output-recording.5e4ef7bc.js";import{_ as i,o as d,c as o,a as e,b as s,e as t,t as n,d as r,r as c}from"./app.977e81c1.js";const p={},u=e("h1",{id:"jfr",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#jfr","aria-hidden":"true"},"#"),t(" jfr")],-1),h={href:"https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn&id=command-jfr",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"jfr",-1),g=t("\u5728\u7EBF\u6559\u7A0B"),v=r(`

\u63D0\u793A

Java Flight Recorder (JFR) \u662F\u4E00\u79CD\u7528\u4E8E\u6536\u96C6\u6709\u5173\u6B63\u5728\u8FD0\u884C\u7684 Java \u5E94\u7528\u7A0B\u5E8F\u7684\u8BCA\u65AD\u548C\u5206\u6790\u6570\u636E\u7684\u5DE5\u5177\u3002\u5B83\u96C6\u6210\u5230 Java \u865A\u62DF\u673A (JVM) \u4E2D\uFF0C\u51E0\u4E4E\u4E0D\u4F1A\u9020\u6210\u6027\u80FD\u5F00\u9500\uFF0C\u56E0\u6B64\u5373\u4F7F\u5728\u8D1F\u8F7D\u8F83\u91CD\u7684\u751F\u4EA7\u73AF\u5883\u4E2D\u4E5F\u53EF\u4EE5\u4F7F\u7528\u3002

jfr \u547D\u4EE4\u652F\u6301\u5728\u7A0B\u5E8F\u52A8\u6001\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u5F00\u542F\u548C\u5173\u95ED JFR \u8BB0\u5F55\u3002 \u8BB0\u5F55\u6536\u96C6\u6709\u5173 event \u7684\u6570\u636E\u3002\u4E8B\u4EF6\u5728\u7279\u5B9A\u65F6\u95F4\u70B9\u53D1\u751F\u5728 JVM \u6216 Java \u5E94\u7528\u7A0B\u5E8F\u4E2D\u3002\u6BCF\u4E2A\u4E8B\u4EF6\u90FD\u6709\u4E00\u4E2A\u540D\u79F0\u3001\u4E00\u4E2A\u65F6\u95F4\u6233\u548C\u4E00\u4E2A\u53EF\u9009\u7684\u6709\u6548\u8D1F\u8F7D\u3002\u8D1F\u8F7D\u662F\u4E0E\u4E8B\u4EF6\u76F8\u5173\u7684\u6570\u636E\uFF0C\u4F8B\u5982 CPU \u4F7F\u7528\u7387\u3001\u4E8B\u4EF6\u524D\u540E\u7684 Java \u5806\u5927\u5C0F\u3001\u9501\u6301\u6709\u8005\u7684\u7EBF\u7A0B ID \u7B49\u3002

jfr \u547D\u4EE4\u57FA\u672C\u8FD0\u884C\u7ED3\u6784\u662F jfr cmd [actionArg]

\u6CE8\u610F\uFF1A JDK8 \u7684 8u262 \u7248\u672C\u4E4B\u540E\u624D\u652F\u6301 jfr

\u53C2\u6570\u8BF4\u660E

\u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
cmd\u8981\u6267\u884C\u7684\u64CD\u4F5C \u652F\u6301\u7684\u547D\u4EE4\u3010start\uFF0Cstatus\uFF0Cdump\uFF0Cstop\u3011
actionArg\u5C5E\u6027\u540D\u6A21\u5F0F
[n:]\u8BB0\u5F55\u540D\u79F0
[r:]\u8BB0\u5F55 id \u503C
[dumponexit:]\u7A0B\u5E8F\u9000\u51FA\u65F6\uFF0C\u662F\u5426\u8981 dump \u51FA .jfr \u6587\u4EF6\uFF0C\u9ED8\u8BA4\u4E3A false
[d:]\u5EF6\u8FDF\u591A\u4E45\u540E\u542F\u52A8 JFR \u8BB0\u5F55\uFF0C\u652F\u6301\u5E26\u5355\u4F4D\u914D\u7F6E\uFF0Ceg: 60s, 2m, 5h, 3d. \u4E0D\u5E26\u5355\u4F4D\u5C31\u662F\u79D2\uFF0C\u9ED8\u8BA4\u65E0\u5EF6\u8FDF
[duration:]JFR \u8BB0\u5F55\u6301\u7EED\u65F6\u95F4\uFF0C\u652F\u6301\u5355\u4F4D\u914D\u7F6E\uFF0C\u4E0D\u5E26\u5355\u4F4D\u5C31\u662F\u79D2\uFF0C\u9ED8\u8BA4\u4E00\u76F4\u8BB0\u5F55
[s:]\u91C7\u96C6 Event \u7684\u8BE6\u7EC6\u914D\u7F6E\u6587\u4EF6\uFF0C\u9ED8\u8BA4\u662F default.jfc \u4F4D\u4E8E $JAVA_HOME/lib/jfr/default.jfc
[f:]\u5C06\u8F93\u51FA\u8F6C\u50A8\u5230\u6307\u5B9A\u8DEF\u5F84
[maxage:]\u7F13\u51B2\u533A\u6570\u636E\u6700\u5927\u6587\u4EF6\u8BB0\u5F55\u4FDD\u5B58\u65F6\u95F4\uFF0C\u652F\u6301\u5355\u4F4D\u914D\u7F6E\uFF0C\u4E0D\u5E26\u5355\u4F4D\u5C31\u662F\u79D2\uFF0C\u9ED8\u8BA4\u662F\u4E0D\u9650\u5236
[maxsize:]\u7F13\u51B2\u533A\u7684\u6700\u5927\u6587\u4EF6\u5927\u5C0F\uFF0C\u652F\u6301\u5355\u4F4D\u914D\u7F6E\uFF0C \u4E0D\u5E26\u5355\u4F4D\u662F\u5B57\u8282\uFF0Cm \u6216\u8005 M \u4EE3\u8868 MB\uFF0Cg \u6216\u8005 G \u4EE3\u8868 GB\u3002
[state:]jfr \u8BB0\u5F55\u72B6\u6001

\u542F\u52A8 JFR \u8BB0\u5F55

$ jfr start
Started recording 1. No limit specified, using maxsize=250MB as default.

\u63D0\u793A

\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u5F00\u542F\u7684\u662F\u9ED8\u8BA4\u53C2\u6570\u7684 jfr \u8BB0\u5F55

\u542F\u52A8 jfr \u8BB0\u5F55\uFF0C\u6307\u5B9A\u8BB0\u5F55\u540D\uFF0C\u8BB0\u5F55\u6301\u7EED\u65F6\u95F4\uFF0C\u8BB0\u5F55\u6587\u4EF6\u4FDD\u5B58\u8DEF\u5F84\u3002

$ jfr start -n myRecording --duration 60s -f /tmp/myRecording.jfr
Started recording 2. The result will be written to:
/tmp/myRecording.jfr

\u67E5\u770B JFR \u8BB0\u5F55\u72B6\u6001

\u9ED8\u8BA4\u662F\u67E5\u770B\u6240\u6709 JFR \u8BB0\u5F55\u4FE1\u606F

$ jfr status
Recording: recording=1 name=Recording-1 (running)
Recording: recording=2 name=myRecording duration=PT1M (closed)

\u67E5\u770B\u6307\u5B9A\u8BB0\u5F55 id \u7684\u8BB0\u5F55\u4FE1\u606F

$ jfr status -r 1
Recording: recording=1 name=Recording-1 (running)

\u67E5\u770B\u6307\u5B9A\u72B6\u6001\u7684\u8BB0\u5F55\u4FE1\u606F

$ jfr status --state closed
Recording: recording=2 name=myRecording duration=PT1M (closed)

dump jfr \u8BB0\u5F55

`,19),b=e("code",null,"jfr dump",-1),f=e("code",null,"jfr",-1),_=e("br",null,null,-1),x=t(" \u6307\u5B9A\u8BB0\u5F55\u8F93\u51FA\u8DEF\u5F84"),k=r(`
$ jfr dump -r 1 -f /tmp/myRecording1.jfr
Dump recording 1, The result will be written to:
/tmp/myRecording1.jfr

\u4E0D\u6307\u5B9A\u6587\u4EF6\u8F93\u51FA\u8DEF\u5F84\uFF0C\u9ED8\u8BA4\u662F\u4FDD\u5B58\u5230arthas-output\u76EE\u5F55\u4E0B

$ jfr dump -r 1
Dump recording 1, The result will be written to:
/tmp/test/arthas-output/20220819-200915.jfr

\u505C\u6B62 jfr \u8BB0\u5F55

\u4E0D\u6307\u5B9A\u8BB0\u5F55\u8F93\u51FA\u8DEF\u5F84\uFF0C\u9ED8\u8BA4\u662F\u4FDD\u5B58\u5230arthas-output\u76EE\u5F55\u4E0B

$ jfr stop -r 1
Stop recording 1, The result will be written to:
/tmp/test/arthas-output/20220819-202049.jfr

\u6CE8\u610F\u4E00\u6761\u8BB0\u5F55\u53EA\u80FD\u505C\u6B62\u4E00\u6B21\u3002

\u4E5F\u53EF\u4EE5\u6307\u5B9A\u8BB0\u5F55\u8F93\u51FA\u8DEF\u5F84\u3002

\u901A\u8FC7\u6D4F\u89C8\u5668\u67E5\u770B arthas-output \u4E0B\u9762 JFR \u8BB0\u5F55\u7684\u7ED3\u679C

`,9),j=t("\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0Carthas \u4F7F\u7528 8563 \u7AEF\u53E3\uFF0C\u5219\u53EF\u4EE5\u6253\u5F00\uFF1A "),y={href:"http://localhost:8563/arthas-output/",target:"_blank",rel:"noopener noreferrer"},R=t("http://localhost:8563/arthas-output/"),J=t(" \u67E5\u770B\u5230"),F=e("code",null,"arthas-output",-1),M=t("\u76EE\u5F55\u4E0B\u9762\u7684 JFR \u8BB0\u5F55\u7ED3\u679C\uFF1A"),$=e("p",null,[e("img",{src:l,alt:""})],-1),w=e("p",null,"\u751F\u6210\u7684\u7ED3\u679C\u53EF\u4EE5\u7528\u652F\u6301 jfr \u683C\u5F0F\u7684\u5DE5\u5177\u6765\u67E5\u770B\u3002\u6BD4\u5982\uFF1A",-1),T=e("ul",null,[e("li",null,"JDK Mission Control \uFF1A https://github.com/openjdk/jmc")],-1);function V(B,D){const a=c("ExternalLinkIcon");return d(),o("div",null,[u,e("p",null,[e("a",h,[m,g,s(a)])]),v,e("p",null,[b,t(n()+" \u4F1A\u8F93\u51FA\u4ECE\u5F00\u59CB\u5230\u8FD0\u884C\u8BE5\u547D\u4EE4\u8FD9\u6BB5\u65F6\u95F4\u5185\u7684\u8BB0\u5F55\u5230 JFR \u6587\u4EF6\uFF0C\u4E14\u4E0D\u4F1A\u505C\u6B62 ",1),f,t(n()+" \u7684\u8BB0\u5F55",1),_,x]),k,e("p",null,[j,e("a",y,[R,s(a)]),J,F,M]),$,w,T])}const S=i(p,[["render",V],["__file","jfr.html.vue"]]);export{S as default};