| jstat(1) | Monitoring Tools | jstat(1) |
نام (NAME)
jstat - نظارت بر آمارهای ماشین مجازی جاوا (JVM). این دستور آزمایشی بوده و پشتیبانی نمیشود.
خلاصه دستور (SYNOPSIS)
jstat [ generalOption | outputOptions vmid [ interval[s|ms] [ count ] ]
generalOption
outputOptions
vmid
[protocol:][//]lvmid[@hostname[:port]/servername]
interval [s|ms]
count
دستور jstat آمار عملکرد را برای یک Java HotSpot VM ابزاربندیشده (instrumented) نمایش میدهد. JVM هدف توسط شناسه ماشین مجازی آن، یا گزینه vmid مشخص میشود.
شناسه ماشین مجازی (VIRTUAL MACHINE IDENTIFIER)
نحو رشتهی vmid با نحو یک URI مطابقت دارد:
[protocol:][//]lvmid[@hostname[:port]/servername]
protocol
lvmid
hostname
port
servername
دستور jstat از دو نوع گزینه پشتیبانی میکند: گزینههای عمومی و گزینههای خروجی. گزینههای عمومی باعث میشوند که دستور jstat اطلاعات سادهای درباره کاربرد و نگارش نمایش دهد. گزینههای خروجی، محتوا و قالب خروجی آماری را تعیین میکنند.
تمام گزینهها و عملکردهای آنها ممکن است در نگارشهای آینده دستخوش تغییر یا حذف شوند.
گزینههای عمومی (General Options)
اگر یکی از گزینههای عمومی را مشخص کنید، نمیتوانید هیچ گزینه یا پارامتر دیگری را تعیین نمایید.
-help
-options
گزینههای خروجی (Output Options)
اگر گزینه عمومی را مشخص نکنید، میتوانید گزینههای خروجی را تعیین کنید. گزینههای خروجی، محتوا و قالب خروجیِ دستور jstat را تعیین میکنند و از یک statOption تک، بههمراه هر یک از دیگر گزینههای خروجی (-h، -t و -J) تشکیل شدهاند. گزینه statOption باید در ابتدا قرار گیرد.
خروجی بهصورت یک جدول قالببندی میشود که ستونهای آن با فاصله از یکدیگر جدا شدهاند. یک سطر سرایند با عناوین، ستونها را توصیف میکند. از گزینه -h برای تنظیم بسامد نمایش سرایند استفاده کنید. نام سرایند ستونها در بین گزینههای مختلف یکدست است. بهطور کلی، اگر دو گزینه ستونی با نام یکسان ارائه دهند، منبع دادههای آن دو ستون یکسان است.
از گزینه -t برای نمایش یک ستون برچسب زمان با عنوان Timestamp بهعنوان نخستین ستون خروجی استفاده کنید. ستون Timestamp شامل زمان سپریشده (به ثانیه) از زمان آغاز بهکار JVM مقصد است. دقت تفکیک برچسب زمان به عوامل گوناگونی بستگی دارد و ممکن است به دلیل تأخیر در زمانبندی ریسهها (thread scheduling) در سیستمهای دارای بار کاری سنگین دچار نوسان شود.
از پارامترهای interval و count بهترتیب برای تعیین بسامد (نرخ تکرار) و تعداد دفعاتی که دستور jstat خروجی خود را نمایش میدهد استفاده کنید.
نکته: برای تجزیه (parse) خروجی دستور jstat اسکریپت ننویسید، زیرا قالب آن ممکن است در نگارشهای آینده تغییر کند. اگر اسکریپتهایی بنویسید که خروجی دستور jstat را تجزیه کنند، باید انتظار داشته باشید که برای نگارشهای بعدی این ابزار مجبور به اصلاح آنها شوید.
-statOption
class: آماری درباره رفتار بارگذار کلاس (class loader) نمایش میدهد.
compiler: آماری درباره رفتار کامپایلر درجا (Just-in-Time) در Java HotSpot VM نمایش میدهد.
gc: آماری درباره رفتار هیپِ مدیریتشده توسط زبالهروب (garbage collected heap) نمایش میدهد.
gccapacity: آماری درباره ظرفیت نسلها و فضاهای متناظر آنها نمایش میدهد.
gccause: خلاصهای از آمارهای جمعآوری زباله (مشابه -gcutil) همراه با علت آخرین رویداد جمعآوری زباله و رویداد جاری (در صورت وجود) را نمایش میدهد.
gcnew: آماری از رفتار نسل جوان (new generation) را نمایش میدهد.
gcnewcapacity: آماری درباره اندازههای نسلهای جدید و فضاهای متناظر آنها نمایش میدهد.
gcold: آماری از رفتار نسل کهن (old generation) و آمار متاسپیس (metaspace) نمایش میدهد.
gcoldcapacity: آماری درباره اندازههای نسل کهن نمایش میدهد.
gcmetacapacity: آماری درباره اندازههای metaspace نمایش میدهد.
gcutil: خلاصهای از آمارهای جمعآوری زباله را نمایش میدهد.
printcompilation: آماری از متدهای کامپایل در Java HotSpot VM نمایش میدهد.
-h n
-t
-JjavaOption
اطلاعات زیر ستونهایی را خلاصه میکند که دستور jstat برای هر statOption در خروجی نمایش میدهد.
-class option
Loaded: تعداد کلاسهای بارگذاریشده.
Bytes: تعداد کیلوبایتهای بارگذاریشده.
Unloaded: تعداد کلاسهای تخلیهشده.
Bytes: تعداد کیلوبایتهای تخلیهشده.
Time: زمان صرفشده برای انجام عملیات بارگذاری و تخلیه کلاسها.
-compiler option
Compiled: تعداد وظایف کامپایل انجامشده.
Failed: تعداد وظایف کامپایل ناموفق.
Invalid: تعداد وظایف کامپایل نامعتبر شده.
Time: زمان صرفشده برای انجام وظایف کامپایل.
FailedType: نوع کامپایل آخرین کامپایل ناموفق.
FailedMethod: نام کلاس و متد آخرین کامپایل ناموفق.
-gc option
S0C: ظرفیت فعلی فضای survivor 0 (kB).
S1C: ظرفیت فعلی فضای survivor 1 (kB).
S0U: میزان استفاده از فضای survivor 0 (kB).
S1U: میزان استفاده از فضای survivor 1 (kB).
EC: ظرفیت فعلی فضای eden (kB).
EU: میزان استفاده از فضای eden (kB).
OC: ظرفیت فعلی فضای old (kB).
OU: میزان استفاده از فضای old (kB).
MC: ظرفیت Metaspace (kB).
MU: میزان استفاده از Metaspace (kB).
CCSC: ظرفیت فضای compressed class (kB).
CCSU: میزان استفاده از فضای compressed class (kB).
YGC: تعداد رخدادهای زبالهروبی نسل جوان (Young generation).
YGCT: زمان صرفشده برای زبالهروبی نسل جوان.
FGC: تعداد رخدادهای زبالهروبی کامل (Full GC).
FGCT: زمان صرفشده برای زبالهروبی کامل.
GCT: کل زمان صرفشده برای زبالهروبی.
-gccapacity option
NGCMN: حداقل ظرفیت نسل جدید (kB).
NGCMX: حداکثر ظرفیت نسل جدید (kB).
NGC: ظرفیت فعلی نسل جدید (kB).
S0C: ظرفیت فعلی فضای survivor 0 (kB).
S1C: ظرفیت فعلی فضای survivor 1 (kB).
EC: ظرفیت فعلی فضای eden (kB).
OGCMN: حداقل ظرفیت نسل قدیم (kB).
OGCMX: حداکثر ظرفیت نسل قدیم (kB).
OGC: ظرفیت فعلی نسل قدیم (kB).
OC: ظرفیت فعلی فضای old (kB).
MCMN: حداقل ظرفیت Metaspace (kB).
MCMX: حداکثر ظرفیت Metaspace (kB).
MC: ظرفیت Metaspace (kB).
CCSMN: حداقل ظرفیت فضای compressed class (kB).
CCSMX: حداکثر ظرفیت فضای compressed class (kB).
CCSC: ظرفیت فضای compressed class (kB).
YGC: تعداد رخدادهای GC نسل جوان.
FGC: تعداد رخدادهای GC کامل (Full GC).
-gccause option
LGCC: دلیل آخرین زبالهروبی
GCC: دلیل زبالهروبی فعلی
-gcnew option
S0C: ظرفیت فعلی فضای survivor 0 (kB).
S1C: ظرفیت فعلی فضای survivor 1 (kB).
S0U: میزان استفاده از فضای survivor 0 (kB).
S1U: میزان استفاده از فضای survivor 1 (kB).
TT: آستانه ماندگاری (Tenuring threshold).
MTT: حداکثر آستانه ماندگاری.
DSS: اندازه مطلوب فضای survivor (kB).
EC: ظرفیت فعلی فضای eden (kB).
EU: میزان استفاده از فضای eden (kB).
YGC: تعداد رخدادهای GC نسل جدید.
YGCT: زمان زبالهروبی نسل جدید.
-gcnewcapacity option
NGCMN: حداقل ظرفیت نسل جدید (kB).
NGCMX: حداکثر ظرفیت نسل جدید (kB).
NGC: ظرفیت فعلی نسل جدید (kB).
S0CMX: حداکثر ظرفیت فضای survivor 0 (kB).
S0C: ظرفیت فعلی فضای survivor 0 (kB).
S1CMX: حداکثر ظرفیت فضای survivor 1 (kB).
S1C: ظرفیت فعلی فضای survivor 1 (kB).
ECMX: حداکثر ظرفیت فضای eden (kB).
EC: ظرفیت فعلی فضای eden (kB).
YGC: تعداد رخدادهای GC نسل جدید..sp FGC: تعداد رویدادهای GC کامل (Full GC).
-gcold گزینه
MC: گنجایش metaspace (به کیلوبایت).
MU: میزان فضای استفادهشدهٔ metaspace (به کیلوبایت).
CCSC: گنجایش فضای کلاس فشرده (Compressed class space) (به کیلوبایت).
CCSU: میزان فضای کلاس فشردهٔ استفادهشده (به کیلوبایت).
OC: گنجایش کنونی فضای قدیم (Old space) (به کیلوبایت).
OU: میزان فضای استفادهشدهٔ فضای قدیم (به کیلوبایت).
YGC: تعداد رویدادهای GC نسل جوان (Young generation).
FGC: تعداد رویدادهای GC کامل (Full GC).
FGCT: مدتزمان بازیافت حافظه کامل (Full GC).
GCT: مدتزمان کل بازیافت حافظه (GC).
-gcoldcapacity گزینه
OGCMN: حداقل گنجایش نسل قدیم (به کیلوبایت).
OGCMX: حداکثر گنجایش نسل قدیم (به کیلوبایت).
OGC: گنجایش کنونی نسل قدیم (به کیلوبایت).
OC: گنجایش کنونی فضای قدیم (Old space) (به کیلوبایت).
YGC: تعداد رویدادهای GC نسل جوان (Young generation).
FGC: تعداد رویدادهای GC کامل (Full GC).
FGCT: مدتزمان بازیافت حافظه کامل (Full GC).
GCT: مدتزمان کل بازیافت حافظه (GC).
-gcmetacapacity گزینه
MCMN: حداقل گنجایش metaspace (به کیلوبایت).
MCMX: حداکثر گنجایش metaspace (به کیلوبایت).
MC: گنجایش metaspace (به کیلوبایت).
CCSMN: حداقل گنجایش فضای کلاس فشرده (به کیلوبایت).
CCSMX: حداکثر گنجایش فضای کلاس فشرده (به کیلوبایت).
YGC: تعداد رویدادهای GC نسل جوان (Young generation).
FGC: تعداد رویدادهای GC کامل (Full GC).
FGCT: مدتزمان بازیافت حافظه کامل (Full GC).
GCT: مدتزمان کل بازیافت حافظه (GC).
-gcutil گزینه
S0: میزان استفاده از فضای بازماندهٔ ۰ (Survivor space 0) به صورت درصدی از گنجایش کنونی فضا.
S1: میزان استفاده از فضای بازماندهٔ ۱ (Survivor space 1) به صورت درصدی از گنجایش کنونی فضا.
E: میزان استفاده از فضای عدن (Eden space) به صورت درصدی از گنجایش کنونی فضا.
O: میزان استفاده از فضای قدیم (Old space) به صورت درصدی از گنجایش کنونی فضا.
M: میزان استفاده از metaspace به صورت درصدی از گنجایش کنونی فضا.
CCS: میزان استفاده از فضای کلاس فشرده به صورت درصد.
YGC: تعداد رویدادهای GC نسل جوان (Young generation).
YGCT: مدتزمان بازیافت حافظه نسل جوان.
FGC: تعداد رویدادهای GC کامل (Full GC).
FGCT: مدتزمان بازیافت حافظه کامل (Full GC).
GCT: مدتزمان کل بازیافت حافظه (GC).
-printcompilation گزینه
Compiled: تعداد وظایف کامپایل انجامشده توسط آخرین متد کامپایلشده.
Size: تعداد بایتهای بایتکدِ (bytecode) آخرین متد کامپایلشده.
Type: نوع کامپایل آخرین متد کامپایلشده.
Method: نام کلاس و نام متد مشخصکنندهٔ آخرین متد کامپایلشده. نام کلاس بهجای نقطه (.) از اسلش (/) به عنوان جداکنندهٔ فضای نام استفاده میکند. نام متد، متدِ درون کلاس مشخصشده است. قالب این دو فیلد با گزینهٔ -XX:+PrintCompilation در HotSpot سازگار است.
این بخش مثالهایی از پایش یک JVM محلی با lvmid برابر با 21891 را ارائه میدهد.
گزینه gcutil
این مثال به lvmid برابر با 21891 متصل شده، ۷ نمونه در بازههای زمانی ۲۵۰ میلیثانیهای میگیرد و خروجی را همانطور که توسط گزینه -gcutil مشخص شده نمایش میدهد.
خروجی این مثال نشان میدهد که یک بازیافت حافظه نسل جوان (young generation collection) بین نمونه سوم و چهارم رخ داده است. این بازیافت 0.078 ثانیه به طول انجامید و اشیاء را از فضای eden (E) به فضای old (O) ارتقا داد، که منجر به افزایش بهرهبرداری از فضای old از 66.80% به 68.19% شد. پیش از این بازیافت، از فضای survivor به میزان 97.02% استفاده شده بود، اما پس از این بازیافت به میزان 91.03% استفاده میشود.
jstat -gcutil 21891 250 7 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 97.02 70.31 66.80 95.52 89.14 7 0.300 0 0.000 0.300 0.00 97.02 86.23 66.80 95.52 89.14 7 0.300 0 0.000 0.300 0.00 97.02 96.53 66.80 95.52 89.14 7 0.300 0 0.000 0.300 91.03 0.00 1.98 68.19 95.89 91.24 8 0.378 0 0.000 0.378 91.03 0.00 15.82 68.19 95.89 91.24 8 0.378 0 0.000 0.378 91.03 0.00 17.80 68.19 95.89 91.24 8 0.378 0 0.000 0.378 91.03 0.00 17.80 68.19 95.89 91.24 8 0.378 0 0.000 0.378
تکرار رشته سربرگ ستونها
این مثال به lvmid برابر با 21891 متصل شده، در بازههای ۲۵۰ میلیثانیهای نمونهبرداری میکند و خروجی را طبق مشخصات گزینه -gcnew نمایش میدهد. علاوه بر این، از گزینه -h3 برای نمایش سربرگ ستونها پس از هر ۳ خط داده استفاده میکند.
این مثال علاوه بر نمایش تکرار رشته سربرگ، نشان میدهد که بین نمونههای دوم و سوم یک GC جوان (young GC) رخ داده است. مدت زمان آن 0.001 ثانیه بود. این بازیافت حافظه دادههای فعال کافی پیدا کرد به طوری که بهرهبرداری از فضای survivor 0 یا (S0U) از اندازه مورد نظر survivor یا (DSS) فراتر میرفت. در نتیجه، اشیاء به نسل قدیم (old generation) ارتقا یافتند (که در این خروجی قابل مشاهده نیست) و آستانه نگهداری (TT) از 31 به 2 کاهش یافت.
بازیافت دیگری بین نمونههای پنجم و ششم رخ میدهد. این بازیافت بازماندگان بسیار اندکی پیدا کرد و آستانه نگهداری را به 31 بازگرداند.
jstat -gcnew -h3 21891 250 S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT 64.0 64.0 0.0 31.7 31 31 32.0 512.0 178.6 249 0.203 64.0 64.0 0.0 31.7 31 31 32.0 512.0 355.5 249 0.203 64.0 64.0 35.4 0.0 2 31 32.0 512.0 21.9 250 0.204 S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT 64.0 64.0 35.4 0.0 2 31 32.0 512.0 245.9 250 0.204 64.0 64.0 35.4 0.0 2 31 32.0 512.0 421.1 250 0.204 64.0 64.0 0.0 19.0 31 31 32.0 512.0 84.4 251 0.204 S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT 64.0 64.0 0.0 19.0 31 31 32.0 512.0 306.7 251 0.204
گنجاندن برچسب زمانی برای هر نمونه
این مثال به lvmid برابر با 21891 متصل میشود و ۳ نمونه در بازههای زمانی ۲۵۰ میلیثانیهای میگیرد. گزینه -t برای ایجاد یک برچسب زمانی برای هر نمونه در ستون اول استفاده شده است.
ستون Timestamp زمان سپریشده بر حسب ثانیه را از آغاز به کار JVM مقصد گزارش میدهد. علاوه بر این، خروجی -gcoldcapacity نشان میدهد که با گسترش heap برای پاسخگویی به نیازهای تخصیص یا ارتقا، ظرفیت نسل قدیم (OGC) و ظرفیت فضای old یا (OC) افزایش مییابند. ظرفیت نسل قدیم (OGC) پس از هشتاد و یکمین بازیافت کامل حافظه (FGC)، از 11,696 kB به 13,820 kB افزایش یافته است. بیشینه ظرفیت این نسل (و فضا) 60,544 kB یا (OGCMX) است، بنابراین هنوز فضای کافی برای گسترش دارد.
Timestamp OGCMN OGCMX OGC OC YGC FGC FGCT GCT
150.1 1408.0 60544.0 11696.0 11696.0 194 80 2.874 3.799
150.4 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863
150.7 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863
این مثال با استفاده از گزینهٔ -gcutil به lvmid با شمارهٔ 40496 روی سامانهای به نام remote.domain متصل میشود و بهطور نامحدود، هر ثانیه یک نمونه برمیدارد.
شناسهٔ lvmid با نام میزبان راه دور ترکیب میشود تا یک vmid بهصورت 40496@remote.domain ساخته شود. این vmid موجب استفاده از پروتکل rmi برای برقراری ارتباط با سرور پیشفرض jstatd روی میزبان راه دور میشود. سرور jstatd با استفاده از دستور rmiregistry روی remote.domain که به درگاه پیشفرض دستور rmiregistry (درگاه 1099) متصل شده است، مکانیابی میشود.
jstat -gcutil 40496@remote.domain 1000 ... output omitted
همچنین ببینید (SEE ALSO)
| 03 March 2015 | JDK 8 |