JFR(1) دستورات JDK JFR(1)

jfr - ابزار تجزیه، تحلیل و استخراج فایل‌های ضبط‌شده پرواز جاوا (JFR) در OpenJDK 21

برای چاپ محتویات یک ضبط پرواز در خروجی استاندارد:

jfr print [گزینه‌ها] فایل

برای نمایش تجمیعی داده‌های رویداد در خروجی استاندارد:

jfr view [گزینه‌ها] فایل

برای پیکربندی یک فایل تنظیمات .jfc:

jfr configure [گزینه‌ها]

برای چاپ اطلاعات متادیتا درباره رویدادهای ضبط پرواز:

jfr metadata [فایل]

برای مشاهده آمار خلاصه‌شده برای یک فایل ضبط پرواز:

jfr summary فایل

برای حذف رویدادها از یک فایل ضبط پرواز:

jfr scrub [گزینه‌ها] فایل

برای سرهم‌بندی فایل‌های تکه (chunk) در یک فایل ضبط پرواز:

jfr assemble مخزن فایل

برای تجزیه یک فایل ضبط پرواز به فایل‌های تکه (chunk):

jfr disassemble [گزینه‌ها] فایل

گزینه‌ها
اختیاری: گزینه‌های خط فرمان را که با فاصله از هم جدا شده‌اند مشخص می‌کند. برای توضیحات گزینه‌های موجود، بخش‌های مربوط به زیرمؤلفه‌ها را ببینید.
فایل
نام فایل ضبط پرواز هدف (.jfr) را مشخص می‌کند.
مخزن
مکان فایل‌های تکه‌ای را که قرار است در یک ضبط پرواز سرهم‌بندی شوند مشخص می‌کند.

دستور jfr ابزاری برای تعامل با فایل‌های ضبط پرواز (.jfr) فراهم می‌کند. کارکرد اصلی آن فیلتر کردن، خلاصه‌سازی و خروجی دادن فایل‌های ضبط پرواز به فرمت قابل خواندن توسط انسان است. همچنین پشتیبانی از پاک‌سازی (scrubbing)، ادغام و تقسیم فایل‌های ضبط وجود دارد.

فایل‌های ضبط پرواز به صورت فایل‌های باینری ایجاد و ذخیره می‌شوند. داشتن ابزاری که بتواند محتویات را از ضبط پرواز استخراج کند، محتویات را دستکاری کرده و به فرمت قابل خواندن توسط انسان تبدیل نماید، به توسعه‌دهندگان در رفع اشکال مشکلات کارایی برنامه‌های جاوا کمک می‌کند.

دستور jfr دارای چندین زیردستور است:

•
print
•
view
•
configure
•
metadata
•
summary
•
scrub
•
assemble
•
disassemble

از jfr print برای چاپ محتویات یک فایل ضبط پرواز در خروجی استاندارد استفاده کنید.

نحو دستور:

jfr print [--xml|--json] [--categories <فیلترها>] [--events <فیلترها>] [--stack-depth <عمق>] <فایل>

که در آن:

--xml
ضبط را در قالب XML چاپ می‌کند.
--json
ضبط را در قالب JSON چاپ می‌کند.
--categories <فیلترها>
رویدادهای منطبق با یک نام دسته‌بندی را انتخاب می‌کند. فیلتر یک لیست جداشده با کاما از نام‌ها (ساده و/یا واجد شرایط) و/یا الگوهای glob داخل نقل‌قول است.
--events <فیلترها>
رویدادهای منطبق با یک نام رویداد را انتخاب می‌کند. فیلتر یک لیست جداشده با کاما از نام‌ها (ساده و/یا واجد شرایط) و/یا الگوهای glob داخل نقل‌قول است.
--stack-depth <عمق>
تعداد فریم‌ها در ردپای پشته (stack trace)، به طور پیش‌فرض ۵ است.
<فایل>
مکان فایل ضبط (.jfr)

قالب پیش‌فرض برای چاپ محتویات فایل ضبط پرواز، فرمت قابل خواندن توسط انسان است مگر اینکه xml یا json مشخص شده باشد. این گزینه‌ها خروجی ماشین‌خوان ارائه می‌دهند که می‌تواند توسط اسکریپت‌های ایجادشده توسط کاربر تجزیه یا پردازش شود.

برای مشاهده نمونه کاربردهای فیلترها از jfr --help print استفاده کنید.

برای کاهش حجم داده‌های نمایش داده شده، فیلتر کردن رویدادها یا دسته‌بندی‌های رویداد امکان‌پذیر است. فیلتر بر روی نام نمادین یک رویداد که با استفاده از حاشیه‌نویسی @Name تنظیم شده، یا نام دسته‌بندی که با استفاده از حاشیه‌نویسی @Category تنظیم شده، عمل می‌کند. اگر از چندین فیلتر استفاده شود، رویدادهای هر دو فیلتر گنجانده خواهند شد. اگر از هیچ فیلتری استفاده نشود، تمام رویدادها چاپ می‌شوند. اگر ترکیبی از فیلتر دسته‌بندی و فیلتر رویداد استفاده شود، رویدادهای انتخابی اجتماع دو فیلتر خواهند بود.

برای مثال، جهت نمایش تمام رویدادهای GC و رویداد CPULoad، می‌توان از دستور زیر استفاده کرد:

jfr print --categories GC --events CPULoad recording.jfr

مقادیر رویدادها بر اساس انواع محتوایی که مورد استفاده قرار گرفته‌اند قالب‌بندی می‌شوند. برای مثال، فیلدی با حاشیه‌نویسی jdk.jfr.Percentage که مقدار 0.52 دارد به صورت 52% قالب‌بندی می‌شود.

ردپای پشته به طور پیش‌فرض به ۵ فریم کوتاه می‌شود، اما این تعداد را می‌توان با استفاده از گزینه خط فرمان --stack-depth افزایش یا کاهش داد.

از jfr view برای تجمیع و نمایش داده‌های رویداد در خروجی استاندارد استفاده کنید.

نحو دستور:

jfr view [--verbose] [--width <عدد>] [--truncate <حالت>] [--cell-height <عدد>] <نما> <فایل>

که در آن:

--verbose
پرس‌وجویی (query) را که نما را می‌سازد نمایش می‌دهد.
--width <عدد>
عرض نما بر حسب تعداد کاراکترها. مقدار پیش‌فرض به نما بستگی دارد.
--truncate <حالت>
نحوه کوتاه کردن محتوایی که از فضای یک سلول جدول فراتر می‌رود. حالت می‌تواند 'beginning' (از ابتدا) یا 'end' (از انتها) باشد. مقدار پیش‌فرض 'end' است.
--cell-height <عدد>
حداکثر تعداد سطرها در یک سلول جدول. مقدار پیش‌فرض به نما بستگی دارد.
<نما>
نام نما یا نوع رویداد برای نمایش. برای مشاهده لیست نماهای موجود از jfr --help view استفاده کنید.
<فایل>
مکان فایل ضبط (.jfr)

پارامتر <نما> می‌تواند نام یک نوع رویداد باشد. برای مشاهده یک لیست از jfr view types <file> استفاده کنید. برای نمایش تمام نماها، از jfr view all-views <file> استفاده کنید. برای نمایش تمام رویدادها، از jfr view all-events <file> استفاده کنید.

از jfr configure برای پیکربندی یک فایل تنظیمات .jfc استفاده کنید.

نحو دستور:

jfr configure [--interactive] [--verbose] [--input ] [--output ] [option=value]* [event-setting=value]*

--interactive
حالت تعاملی که در آن پیکربندی با مجموعه‌ای از پرسش‌ها تعیین می‌شود.
--verbose
تنظیمات تغییریافته را نمایش می‌دهد.
--input <فایل‌ها>
یک لیست جداشده با کاما از فایل‌های .jfc که پیکربندی جدید بر پایه آن‌ها است. اگر فایلی مشخص نشود، از فایل پیش‌فرض در JDK استفاده می‌شود (default.jfc). اگر 'none' مشخص شود، پیکربندی جدید خالی شروع می‌شود.
--output <فایل>
نام فایل خروجی تولید شده. اگر مشخص نشود، نام فایل custom.jfc استفاده خواهد شد.
مقدار گزینه برای تغییر. برای مشاهده گزینه‌های موجود از jfr help configure استفاده کنید.
مقدار تنظیم رویداد برای تغییر. از این فرمت استفاده کنید: <نام-رویداد>#<نام-تنظیم>=<مقدار> برای افزودن یک تنظیم رویداد جدید، یک پیشوند '+' به نام رویداد اضافه کنید.

جداکننده فضای خالی می‌تواند برای مقادیر بازه زمانی حذف شود، مانند 20ms. برای اطلاعات بیشتر درباره نحو تنظیمات، Javadoc بسته jdk.jfr را ببینید.

از jfr metadata برای نمایش اطلاعات درباره رویدادها، مانند نام رویدادها، دسته‌بندی‌ها و ساختار فیلدها در یک فایل ضبط پرواز استفاده کنید.

نحو دستور:

jfr metadata [--categories ] [--events ] []

--categories <فیلتر>
رویدادهای منطبق با یک نام دسته‌بندی را انتخاب می‌کند. فیلتر یک لیست جداشده با کاما از نام‌ها (ساده و/یا واجد شرایط) و/یا الگوهای glob داخل نقل‌قول است.
--events <فیلتر>
رویدادهای منطبق با یک نام رویداد را انتخاب می‌کند. فیلتر یک لیست جداشده با کاما از نام‌ها (ساده و/یا واجد شرایط) و/یا الگوهای glob داخل نقل‌قول است.
<فایل>
مکان فایل ضبط (.jfr)

اگر این پارامتر حذف شود، متادیتا از همان JDK که ابزار 'jfr' در آن قرار دارد استفاده خواهد شد.

از jfr summary برای چاپ آمار یک ضبط استفاده کنید. برای مثال، یک خلاصه می‌تواند تعداد رویدادهای ضبط‌شده و میزان فضای دیسکی را که استفاده کرده‌اند نشان دهد. این برای عیب‌یابی و درک تأثیر تنظیمات رویداد مفید است.

نحو دستور:

jfr summary <فایل>

که در آن:

<فایل>
مکان فایل ضبط پرواز (.jfr)

از jfr scrub برای حذف محتویات حساس از یک فایل یا کاهش حجم آن استفاده کنید.

نحو دستور:

jfr scrub [--include-events <فیلتر>] [--exclude-events <فیلتر>] [--include-categories <فیلتر>] [--exclude-categories <فیلتر>] [--include-threads <فیلتر>] [--exclude-threads <فیلتر>] <فایل-ورودی> [<فایل-خروجی>]

--include-events <فیلتر>
رویدادهای منطبق با یک نام رویداد را انتخاب می‌کند.
--exclude-events <فیلتر>
رویدادهای منطبق با یک نام رویداد را مستثنی می‌کند.
--include-categories <فیلتر>
رویدادهای منطبق با یک نام دسته‌بندی را انتخاب می‌کند.
--exclude-categories <فیلتر>
رویدادهای منطبق با یک نام دسته‌بندی را مستثنی می‌کند.
--include-threads <فیلتر>
رویدادهای منطبق با یک نام رشته (thread) را انتخاب می‌کند.
--exclude-threads <فیلتر>
رویدادهای منطبق با یک نام رشته را مستثنی می‌کند.
<فایل-ورودی>
فایل ورودی برای خواندن رویدادها از آن.
<فایل-خروجی>
فایل خروجی برای نوشتن رویدادهای فیلترشده در آن. اگر فایلی مشخص نشود، در همان مسیر فایل ورودی اما با پسوند "-scrubbed" اضافه شده به نام فایل ذخیره می‌شود.

فیلتر یک لیست جداشده با کاما از نام‌ها (ساده و/یا واجد شرایط) و/یا الگوهای glob داخل نقل‌قول است. اگر از چندین فیلتر استفاده شود، به ترتیب مشخص‌شده اعمال می‌شوند.

از jfr assemble برای سرهم‌بندی فایل‌های تکه (chunk) در یک فایل ضبط استفاده کنید.

نحو دستور:

jfr assemble <مخزن> <فایل>

که در آن:

<مخزن>
پوشه‌ای که مخزن حاوی فایل‌های تکه در آن قرار دارد.
<فایل>
مکان فایل ضبط پرواز (.jfr).

اطلاعات ضبط پرواز در قالب تکه‌ها (chunks) نوشته می‌شوند. یک تکه حاوی تمام اطلاعات لازم برای تجزیه است. یک تکه معمولاً شامل رویدادهای مفید برای عیب‌یابی است. در صورتی که یک JVM کرش کند، این تکه‌ها قابل بازیابی هستند و می‌توان از آن‌ها برای ایجاد یک فایل ضبط پرواز با استفاده از این دستور jfr assemble استفاده کرد. این فایل‌های تکه به ترتیب زمانی به هم متصل می‌شوند و فایل‌های تکه‌ای که کامل نشده‌اند (.part) نادیده گرفته می‌شوند.

از jfr disassemble برای تجزیه یک فایل ضبط پرواز به قطعات فایل تکه آن استفاده کنید.

نحو دستور:

jfr disassemble [--max-chunks <تکه‌ها>] [--output <پوشه>] <فایل>

که در آن:

--output <پوشه>
مکان نوشتن فایل‌های تجزیه‌شده، به طور پیش‌فرض پوشه فعلی.
--max-chunks <تکه‌ها>
حداکثر تعداد تکه‌ها در هر فایل، به طور پیش‌فرض ۵. اندازه تکه متفاوت است، اما معمولاً حدود ۱۵ مگابایت است.
--max-size <اندازه>
حداکثر تعداد بایت در هر فایل.
<فایل>
مکان فایل ضبط پرواز (.jfr)

این قابلیت می‌تواند برای تعمیر یک فایل خراب با حذف تکه معیوب مفید باشد. همچنین می‌توان از آن برای کاهش اندازه فایلی که برای انتقال بیش از حد بزرگ است استفاده کرد. فایل‌های تکه حاصل با نام‌های myfile_1.jfr، myfile_2.jfr و غیره نام‌گذاری می‌شوند. در صورت نیاز، نام‌های فایل‌های حاصل با صفر پر می‌شوند (padded with zeros) تا ترتیب زمانی حفظ شود. برای مثال، اگر ضبط شامل بیش از ۱۰۰ تکه باشد، نام فایل تکه myfile_001.jfr خواهد بود.

از jfr --version یا jfr version برای مشاهده اطلاعات رشته نسخه برای این دستور jfr استفاده کنید.

برای دریافت راهنما در مورد هر یک از زیردستورهای jfr، استفاده کنید از:

jfr <--help|help> [زیردستور]

که در آن:

[زیردستور] یکی از موارد زیر است:

•
print
•
view
•
configure
•
metadata
•
summary
•
scrub
•
assemble
•
disassemble
2023 JDK 21