JCMD(1) JDK Commands JCMD(1)

jcmd - ارسال درخواست‌های فرمان عیب‌یابی به یک ماشین مجازی جاوا (JVM) در حال اجرا

jcmd [pid | main-class] command... | PerfCounter.print | -f filename

jcmd [-l]

jcmd -h

در صورت استفاده، ابزار jcmd درخواست فرمان عیب‌یابی را به شناسه فرایند (PID) مربوط به فرایند جاوا ارسال می‌کند.
در صورت استفاده، ابزار jcmd درخواست فرمان عیب‌یابی را به تمام فرایندهای جاوایی که کلاس اصلی (main class) آن‌ها نام مشخص‌شده را دارند ارسال می‌کند.
مقدار command باید یک فرمان معتبر jcmd برای JVM انتخاب‌شده باشد. فهرست فرمان‌های موجود برای jcmd با اجرای فرمان help به دست می‌آید (jcmd pid help) که در آن pid شناسه فرایند برای فرایند جاوای در حال اجرا است.
شمارنده‌های کارایی (performance counters) ارائه‌شده توسط فرایند جاوای مشخص‌شده را چاپ می‌کند.
فرمان‌ها را از یک فایل مشخص، filename، می‌خواند و اجرا می‌کند.
فهرست شناسه‌های فرایند ماشین مجازی جاوا را که در یک فرایند docker مجزا اجرا نمی‌شوند، به همراه کلاس اصلی و آرگومان‌های خط فرمانی که برای راه‌اندازی فرایند استفاده شده‌اند، نمایش می‌دهد. اگر JVM درون یک فرایند docker باشد، باید از ابزارهایی مانند ps برای یافتن PID استفاده کنید.
نکته: استفاده از jcmd بدون آرگومان، معادل استفاده از jcmd -l است.
راهنمای خط فرمان ابزار jcmd را نمایش می‌دهد.

ابزار jcmd برای ارسال درخواست‌های فرمان عیب‌یابی به JVM استفاده می‌شود. این ابزار باید روی همان ماشینی که JVM در آن در حال اجرا است استفاده شود و دارای همان شناسه‌های کاربری و گروهی مؤثری باشد که برای راه‌اندازی JVM به کار رفته‌اند. هر فرمان عیب‌یابی مجموعه گزینه‌ها و آرگومان‌های خاص خود را دارد. برای نمایش توضیحات، نحو و فهرستی از گزینه‌ها و آرگومان‌های موجود برای یک فرمان عیب‌یابی، از نام آن فرمان به عنوان آرگومان استفاده کنید. برای مثال:

jcmd pid help command

اگر آرگومان‌ها شامل فاصله باشند، باید آن‌ها را در علامت نقل‌قول تکی یا دوتایی قرار دهید (' یا "). علاوه بر این، برای جلوگیری از پردازش نشانه‌های نقل‌قول توسط شل سیستم‌عامل، باید نشانه‌های نقل‌قول تکی یا دوتایی را با یک بک‌اسلش (\) اسکیپ کنید. همچنین، می‌توانید این آرگومان‌ها را ابتدا با علامت نقل‌قول تکی و سپس با علامت نقل‌قول دوتایی محصور کنید (یا ابتدا با نقل‌قول دوتایی و سپس با نقل‌قول تکی).

اگر شناسه فرایند (pid) یا کلاس اصلی (main-class) را به عنوان اولین آرگومان مشخص کنید، ابزار jcmd درخواست فرمان عیب‌یابی را به فرایند جاوای دارای شناسه مشخص‌شده یا به تمام فرایندهای جاوایی که نام کلاس اصلی مشخص‌شده را دارند ارسال می‌کند. همچنین می‌توانید با مشخص کردن 0 به عنوان شناسه فرایند، درخواست فرمان عیب‌یابی را به تمام فرایندهای جاوای موجود ارسال کنید..SH "دستورهای JCMD (COMMANDS FOR JCMD)" مقدار command باید یک دستور عیب‌یابی معتبر jcmd برای JVM انتخاب‌شده باشد. فهرست دستورهای موجود برای jcmd با اجرای دستور help (jcmd pid help) به دست می‌آید که در آن pid شناسهٔ فرایند یک فرایند در حال اجرای جاوا است. اگر pid برابر 0 باشد، دستورها به تمام فرایندهای جاوا ارسال خواهند شد. آرگومان کلاس اصلی برای تطبیق، به‌صورت جزئی یا کامل، با کلاسی که برای شروع جاوا استفاده شده به کار خواهد رفت. اگر هیچ گزینه‌ای داده نشود، شناسه‌های فرایندهای جاوای در حال اجرا را که در فرایندهای جداگانهٔ docker نیستند، همراه با کلاس اصلی و آرگومان‌های خط فرمانی که برای راه‌اندازی فرایند استفاده شده‌اند فهرست می‌کند (مشابه استفاده از -l).

دستورهای jcmd می‌توانند گزینه و آرگومان بپذیرند. گزینه‌ها با استفاده از نحو key یا key=value مشخص می‌شوند. آرگومان‌ها صرفاً به‌صورت یک مقدار داده می‌شوند، نه به‌صورت name=value.

دستورهای زیر در دسترس هستند:

برای اطلاعات بیشتر دربارهٔ یک دستور مشخص.
آرگومان‌ها:
  • command name: نام دستوری که برای آن راهنما می‌خواهیم (STRING، بدون مقدار پیش‌فرض) نکته: گزینه‌های زیر باید با نحو key یا key=value مشخص شوند. گزینه‌ها:
  • -all: (اختیاری) نمایش راهنما برای تمام دستورها (BOOLEAN، false) .
آموزش در حال انجام AOT را پایان داده و نتایج را در فایل(های) مشخص‌شده توسط -XX:AOTConfiguration و/یا -XX:AOTCacheOutput ضبط می‌کند.
تأثیر: کم نکته: JVM باید با استفاده از آرگومان‌های خط فرمان نظیر -XX:AOTMode=record یا -XX:AOTCacheOutput=<file> در حالت آموزش AOT آغاز شده باشد. نتایج آموزش AOT می‌تواند یک فایل پیکربندی AOT، یک فایل حافظهٔ پنهان AOT، یا هر دو باشد.
چاپ تحلیل‌های CodeHeap
تأثیر: کم: وابسته به اندازه و محتوای code heap است. قفل CodeCache_lock را در طول مرحلهٔ تحلیل نگه می‌دارد، که معمولاً مدت زمانی زیر ثانیه است. آرگومان‌ها:
  • function: (اختیاری) تابعی که باید اجرا شود (aggregate، UsedSpace، FreeSpace، MethodCount، MethodSpace، MethodAge، MethodNames، discard (STRING، all)
  • granularity: (اختیاری) سطح جزئیات - مقدار کوچک‌تر -> جزئیات بیشتر (INT، 4096)
طرح‌بندی و محدوده‌های code cache را چاپ می‌کند.
تأثیر: کم
تمام متدهای کامپایل‌شده در code cache را که فعال هستند چاپ می‌کند.
تأثیر: متوسط
دستورالعمل‌های کامپایلر را از یک فایل اضافه می‌کند.
تأثیر: کم آرگومان‌ها:
•
filename: نام فایل دستورالعمل‌ها (STRING، بدون مقدار پیش‌فرض)
حذف تمام دستورالعمل‌های کامپایلر.
تأثیر: کم
تمام دستورالعمل‌های فعال کامپایلر را چاپ می‌کند.
تأثیر: کم
حذف آخرین دستورالعمل اضافه‌شده به کامپایلر.
تأثیر: کم
چاپ ردپای حافظهٔ کامپایل
تأثیر: متوسط: زمان توقف به تعداد متدهای کامپایل‌شده بستگی دارد نکته: گزینه‌ها باید با نحو key یا key=value مشخص شوند. گزینه‌ها:
  • -H: (اختیاری) قالب خوانا برای انسان (BOOLEAN، false)
  • -s: (اختیاری) کمینهٔ اندازهٔ حافظه (MEMORY SIZE، 0)
نوشتن فایل map برای ابزار perf لینوکس.
تأثیر: کم آرگومان‌ها:
•
filename: (اختیاری) نام فایل map. اگر %p در نام فایل مشخص شود، به PID مربوط به JVM بسط می‌یابد. (FILE، "/tmp/perf-%p.map")
متدهای قرارگرفته در صف کامپایل را چاپ می‌کند.
تأثیر: کم
آماره‌هایی دربارهٔ میزان استفاده از Java heap ارائه می‌دهد.
تأثیر: بالا --- وابسته به اندازه و محتوای Java heap است. نکته: گزینه‌ها باید با نحو key یا key=value مشخص شوند. گزینه‌ها:
  • -all: (اختیاری) تمام اشیاء را، از جمله اشیاء غیرقابل‌دسترس، بررسی می‌کند (BOOLEAN، false)
  • -parallel: (اختیاری) تعداد رشته‌های موازی برای بررسی heap. 0 (پیش‌فرض) یعنی به ماشین مجازی اجازه داده شود تعداد رشته‌ها را تعیین کند. 1 یعنی از یک رشته استفاده شود (غیرفعال کردن موازی‌سازی). برای هر مقدار دیگری، ماشین مجازی تلاش می‌کند از تعداد رشته‌های تعیین‌شده استفاده کند، اما ممکن است از تعداد کمتری استفاده کند. (INT، 0)
اطلاعاتی دربارهٔ صف نهایی‌سازی جاوا ارائه می‌دهد.
تأثیر: متوسط
یک رونوشت در قالب HPROF از Java heap تولید می‌کند.
تأثیر: بالا --- وابسته به اندازه و محتوای Java heap است. مگر در حالتی که گزینهٔ -all مشخص شده باشد، یک GC کامل درخواست می‌کند. نکته: گزینه‌های زیر باید با نحو key یا key=value مشخص شوند. گزینه‌ها:
  • -all: (اختیاری) تخلیهٔ تمام اشیاء، از جمله اشیاء غیرقابل‌دسترس (BOOLEAN، false)
  • -gz: (اختیاری) در صورت تعیین، رونوشت heap در قالب gzip‌شده با سطح فشرده‌سازی ارائه‌شده نوشته می‌شود. 1 (توصیه‌شده) سریع‌ترین و 9 قوی‌ترین فشرده‌سازی است. (INT، 1).IP • 2 -overwrite: (اختیاری) در صورت تعیین، در صورتی که فایل دامپ وجود داشته باشد رونویسی خواهد شد (BOOLEAN, false)
  • -parallel: (اختیاری) تعداد رشته‌های موازی مورد استفاده برای دامپ هیپ. ماشین مجازی (VM) تلاش خواهد کرد از تعداد رشته‌های مشخص‌شده استفاده کند، اما ممکن است از تعداد کمتری استفاده نماید. (INT, 1) آرگومان‌ها:
  • filename: نام فایل دامپ. اگر %p در نام فایل مشخص شده باشد، به PID مربوط به JVM گسترش می‌یابد. (FILE، بدون مقدار پیش‌فرض)
اطلاعات عمومی هیپ جاوا را ارائه می‌دهد.
میزان تأثیر: متوسط
java.lang.System.gc() را فراخوانی می‌کند.
میزان تأثیر: متوسط --- به اندازه و محتوای هیپ جاوا بستگی دارد.
java.lang.System.runFinalization() را فراخوانی می‌کند.
میزان تأثیر: متوسط --- به محتوای جاوا بستگی دارد.
نمایش اطلاعات درباره یک ضبط پرواز (flight recording) در حال اجرا
میزان تأثیر: کم نکته: گزینه‌ها باید با استفاده از نحو key یا key=value مشخص شوند. اگر هیچ پارامتری وارد نشود، اطلاعات تمام ضبط‌های فعال نمایش داده می‌شود. گزینه‌ها:
  • name: (اختیاری) نام ضبط پرواز. (STRING، بدون مقدار پیش‌فرض)
  • verbose: (اختیاری) پرچم برای چاپ تنظیمات رویدادها برای این ضبط (BOOLEAN, false)
تنظیم پارامترها برای یک ضبط پرواز (flight recording)
میزان تأثیر: کم نکته: گزینه‌ها باید با استفاده از نحو key یا key=value مشخص شوند. اگر هیچ پارامتری وارد نشود، تنظیمات کنونی نمایش داده می‌شوند. گزینه‌ها:
  • dumppath: (اختیاری) مسیر مکانی که در صورت مواجهه ماشین مجازی با یک خطای بحرانی، مانند خرابی سیستم (crash)، فایل ضبط در آنجا نوشته می‌شود. (STRING، مکان پیش‌فرض، دایرکتوری جاری است)
  • globalbuffercount: (اختیاری) تعداد بافرهای سراسری. این گزینه یک گزینه قدیمی است: برای تغییر تعداد بافرهای سراسری، پارامتر memorysize را تغییر دهید. این مقدار پس از راه‌اندازی JFR قابل تغییر نیست. (STRING، مقدار پیش‌فرض توسط مقدار memorysize تعیین می‌شود)
  • globalbuffersize: (اختیاری) اندازه بافرهای سراسری، به بایت. این گزینه یک گزینه قدیمی است: برای تغییر اندازه بافرهای سراسری، پارامتر memorysize را تغییر دهید. این مقدار پس از راه‌اندازی JFR قابل تغییر نیست. (STRING، مقدار پیش‌فرض توسط مقدار memorysize تعیین می‌شود)
  • maxchunksize: (اختیاری) حداکثر اندازه یک تکه داده (chunk) مجزا به بایت، در صورتی که از یکی از پسوندهای زیر استفاده نشده باشد: 'm' یا 'M' برای مگابایت یا 'g' یا 'G' برای گیگابایت. این مقدار پس از راه‌اندازی JFR قابل تغییر نیست. (STRING, 12M)
  • memorysize: (اختیاری) اندازه کلی حافظه، به بایت در صورتی که از یکی از پسوندهای زیر استفاده نشده باشد: 'm' یا 'M' برای مگابایت یا 'g' یا 'G' برای گیگابایت. این مقدار پس از راه‌اندازی JFR قابل تغییر نیست. (STRING, 10M)
  • repositorypath: (اختیاری) مسیر مکانی که ضبط‌ها تا زمان نوشته‌شدن در یک فایل دائمی در آنجا ذخیره می‌شوند. (STRING، مکان پیش‌فرض، دایرکتوری موقت سیستم‌عامل است. در سیستم‌های عامل لینوکس، دایرکتوری موقت /tmp است. در ویندوز، دایرکتوری موقت توسط متغیر محیطی TMP مشخص می‌شود.)
  • preserve-repository={true|false} : مشخص می‌کند که آیا فایل‌های ذخیره‌شده در مخزن دیسک باید پس از خروج JVM نگهداری شوند یا خیر. در صورت false بودن، فایل‌ها حذف می‌شوند. به‌طور پیش‌فرض، این پارامتر غیرفعال است.
  • stackdepth: (اختیاری) عمق پشته برای ردگیری‌های پشته. تنظیم این مقدار به بیش از مقدار پیش‌فرض 64 ممکن است باعث افت کارایی شود. این مقدار پس از راه‌اندازی JFR قابل تغییر نیست. (LONG, 64)
  • thread_buffer_size: (اختیاری) اندازه بافر محلی برای هر رشته به بایت، در صورتی که از یکی از پسوندهای زیر استفاده نشده باشد: 'k' یا 'K' برای کیلوبایت یا 'm' یا 'M' برای مگابایت. بازنویسی این پارامتر می‌تواند کارایی را کاهش دهد و توصیه نمی‌شود. این مقدار پس از راه‌اندازی JFR قابل تغییر نیست. (STRING, 8k)
  • samplethreads: (اختیاری) پرچم برای فعال‌سازی نمونه‌برداری رشته‌ها. (BOOLEAN, true)
نوشتن داده‌ها در یک فایل در حالی که یک ضبط پرواز در حال اجراست
میزان تأثیر: کم نکته: گزینه‌ها باید با استفاده از نحو key یا key=value مشخص شوند. هیچ گزینه‌ای الزامی نیست. ضبط پس از نوشته‌شدن داده‌ها همچنان به اجرا ادامه می‌دهد. گزینه‌ها:
  • begin: (اختیاری) تعیین زمانی که داده‌های ضبط از آن زمان در فایل دامپ گنجانده می‌شوند. این قالب به صورت زمان محلی مشخص می‌شود. (STRING، بدون مقدار پیش‌فرض)
  • end: (اختیاری) تعیین زمانی که داده‌های ضبط تا آن زمان در فایل دامپ گنجانده می‌شوند. این قالب به صورت زمان محلی مشخص می‌شود. (STRING، بدون مقدار پیش‌فرض)

نکته: برای هر دو پارامتر begin و end، زمان باید در قالبی باشد که توسط java.time.LocalTime::parse(STRING)، java.time.LocalDateTime::parse(STRING) یا java.time.Instant::parse(STRING) قابل خواندن باشد. برای مثال، "13:20:15"، "2020-03-17T09:00:00" یا "2020-03-17T09:00:00Z".

نکته: زمان‌های begin و end متناظر با برچسب‌های زمانی موجود در اطلاعات ثبت‌شده در داده‌های ضبط پرواز هستند.

گزینه دیگر، استفاده از یک زمان نسبی نسبت به زمان جاری است که با یک عدد صحیح منفی به همراه "s"، "m" یا "h" مشخص می‌شود. برای مثال، "-12h"، "-15m" یا "-30s"

  • filename: (اختیاری) نام فایلی که داده‌های ضبط پرواز در آن دامپ می‌شوند. اگر نام فایلی داده نشود، یک نام فایل از روی PID و تاریخ جاری تولید می‌شود. نام فایل همچنین می‌تواند یک دایرکتوری باشد که در این صورت، نام فایل از روی PID و تاریخ جاری در دایرکتوری مشخص‌شده تولید می‌شود. اگر %p و/یا %t در نام فایل مشخص شده باشد، به ترتیب به PID مربوط به JVM و برچسب زمانی جاری گسترش می‌یابد. (FILE، بدون مقدار پیش‌فرض)
  • maxage: (اختیاری) مدت زمان برای دامپ کردن داده‌های ضبط پرواز در یک فایل. (INTEGER به همراه 's' برای ثانیه، 'm' برای دقیقه یا 'h' برای ساعت، بدون مقدار پیش‌فرض)
  • maxsize: (اختیاری) حداکثر اندازه برای مقدار داده‌ای که باید از یک ضبط پرواز دامپ شود به بایت، در صورتی که از یکی از پسوندهای زیر استفاده نشده باشد: 'm' یا 'M' برای مگابایت یا 'g' یا 'G' برای گیگابایت. (STRING، بدون مقدار پیش‌فرض).IP • 2 name: (اختیاری) نام ضبط. اگر نامی مشخص نشود، داده‌های تمام ضبط‌ها تخلیه (dump) می‌شوند. (STRING، بدون مقدار پیش‌فرض)
  • path-to-gc-roots: (اختیاری) پرچمی برای ذخیره مسیر به ریشه‌های بازیافت حافظه (GC) در زمان تخلیه داده‌های ضبط. اطلاعات مسیر برای یافتن نشت‌های حافظه مفید است، اما جمع‌آوری آن می‌تواند باعث توقف کوتاه‌مدت برنامه شود. این پرچم را تنها زمانی فعال کنید که مشکوک به نشت حافظه در برنامه هستید. (BOOLEAN، false)
شروع یک ضبط پرواز (flight recording)
تأثیر: کم نکته: options باید با استفاده از نحو key یا key=value مشخص شوند. اگر هیچ پارامتری وارد نشود، ضبط با مقادیر پیش‌فرض آغاز می‌شود. options:
  • delay: (اختیاری) مدت زمان انتظار پیش از شروع ضبط (INTEGER به‌همراه 's' برای ثانیه، 'm' برای دقیقه یا 'h' برای ساعت، 0s)
  • disk: (اختیاری) پرچمی برای نوشتن هم‌زمان داده‌ها روی دیسک در حین ضبط (BOOLEAN، true)
  • dumponexit: (اختیاری) پرچمی برای نوشتن داده‌های ضبط روی دیسک هنگام خاموش شدن ماشین مجازی جاوا (JVM). اگر روی 'true' تنظیم شود و مقداری برای filename تعیین نشده باشد، ضبط در فایلی در دایرکتوری محل آغاز فرایند نوشته می‌شود. نام فایل یک نام تولیدشده توسط سیستم است که شامل شناسه فرایند (PID)، شناسه ضبط و برچسب زمانی فعلی است. (برای نمونه: id-1-2019_12_12_10_41.jfr) (BOOLEAN، false)
  • duration: (اختیاری) مدت زمان ضبط. توجه داشته باشید که 0s به‌معنای نامحدود است (INTEGER به‌همراه 's' برای ثانیه، 'm' برای دقیقه یا 'h' برای ساعت، 0s)
  • filename: (اختیاری) نام فایلی که پس از توقف ضبط، داده‌های flight recording در آن نوشته می‌شوند. اگر نام فایلی مشخص نشود، نام فایل از روی PID و تاریخ فعلی تولید شده و در دایرکتوری محل آغاز فرایند قرار می‌گیرد. نام فایل همچنین می‌تواند یک دایرکتوری باشد، که در این حالت نام فایل از روی PID و تاریخ فعلی در دایرکتوری مشخص‌شده تولید می‌شود. اگر %p یا %t در نام فایل مشخص شده باشد، به‌ترتیب به PID مربوط به JVM و برچسب زمانی فعلی بسط می‌یابد. (FILE، بدون مقدار پیش‌فرض)
  • maxage: (اختیاری) حداکثر زمان نگهداری داده‌های ضبط‌شده روی دیسک. این پارامتر تنها زمانی معتبر است که پارامتر disk روی true تنظیم شده باشد. توجه داشته باشید که 0s به‌معنای نامحدود است. (INTEGER به‌همراه 's' برای ثانیه، 'm' برای دقیقه یا 'h' برای ساعت، 0s)
  • maxsize: (اختیاری) حداکثر اندازه داده‌ها برای نگهداری روی دیسک به بایت در صورتی که یکی از پسوندهای زیر استفاده نشده باشد: 'm' یا 'M' برای مگابایت یا 'g' یا 'G' برای گیگابایت. این پارامتر تنها زمانی معتبر است که پارامتر disk روی 'true' تنظیم شده باشد. این مقدار نباید از مقدار پارامتر maxchunksize که با دستور JFR.configure تنظیم شده کمتر باشد. (STRING، 0 (بدون حداکثر اندازه))
  • name: (اختیاری) نام ضبط. اگر نامی ارائه نشود، یک نام تولید می‌شود. نام تولیدشده را که در پاسخ به دستور نشان داده می‌شود یادداشت کنید تا بتوانید از آن در سایر دستورها استفاده کنید. (STRING، نام پیش‌فرض تولیدشده توسط سیستم)
  • path-to-gc-roots: (اختیاری) پرچمی برای ذخیره مسیر به ریشه‌های بازیافت حافظه (GC) در انتهای ضبط. اطلاعات مسیر برای یافتن نشت‌های حافظه مفید است اما جمع‌آوری آن زمان‌بر است. این پرچم را تنها زمانی فعال کنید که مشکوک به نشت حافظه در برنامه هستید. اگر پارامتر settings روی 'profile' تنظیم شده باشد، اطلاعات جمع‌آوری‌شده شامل رد پشته (stack trace) مکانی است که شیء مشکوک به نشت در آن تخصیص یافته بود. (BOOLEAN، false)
  • settings: (اختیاری) نام فایل تنظیماتی که رویدادهای قابل ضبط را مشخص می‌کند. برای تعیین بیش از یک فایل، نام‌ها را با کاما (',') از هم جدا کنید. اگر فایل در مسیر JAVA-HOME/lib/jfr نیست، مسیر آن را درج کنید. پروفایل‌های زیر به‌همراه JDK در دایرکتوری JAVA-HOME/lib/jfr قرار دارند: 'default.jfc': مجموعه‌ای از پیش تعریف‌شده از اطلاعات را با بار اضافی (overhead) کم جمع‌آوری می‌کند، بنابراین کمترین تأثیر را بر عملکرد دارد و می‌تواند برای ضبط‌هایی که به‌صورت پیوسته اجرا می‌شوند استفاده شود؛ 'profile.jfc': داده‌های بیشتری نسبت به پروفایل 'default.jfc' فراهم می‌کند، اما با بار اضافی و تأثیر بیشتر بر عملکرد همراه است. از این پیکربندی برای دوره‌های زمانی کوتاه در هنگام نیاز به اطلاعات بیشتر استفاده کنید. از none برای شروع یک ضبط بدون فایل پیکربندی از پیش تعریف‌شده استفاده کنید. (STRING، JAVA-HOME/lib/jfr/default.jfc) تنظیمات رویداد و گزینه‌های .jfc را می‌توان با نحو زیر مشخص کرد:
  • option: (اختیاری) مقدار گزینه‌ای که باید تغییر یابد را مشخص می‌کند. برای فهرست کردن گزینه‌های موجود، از ابزار JAVA_HOME/bin/jfr استفاده کنید.
  • event-setting: (اختیاری) مقدار تنظیم رویدادی که باید تغییر یابد را مشخص می‌کند. از قالب زیر استفاده کنید: <event-name>#<setting-name>=<value> برای افزودن یک تنظیم رویداد جدید، نام رویداد را با '+' پیشوندگذاری کنید. می‌توانید مقادیر چندین تنظیم رویداد و گزینه .jfc را با جدا کردن آن‌ها با فاصله (whitespace) مشخص کنید. در صورت بروز تداخل بین یک پارامتر و یک گزینه .jfc، پارامتر اولویت خواهد داشت. جداکننده فاصله را می‌توان برای مقادیر بازه زمانی، یعنی 20ms، نادیده گرفت. برای اطلاعات بیشتر درباره نحو تنظیمات، به Javadoc مربوط به بسته jdk.jfr مراجعه کنید.
توقف یک ضبط پرواز (flight recording)
تأثیر: کم نکته: options باید با نحو key یا key=value مشخص شوند. اگر هیچ پارامتری وارد نشود، هیچ ضبطی متوقف نمی‌شود. options:
  • filename: (اختیاری) نام فایلی که هنگام توقف ضبط، اطلاعات ضبط در آن نوشته می‌شود. اگر %p یا %t در نام فایل مشخص شده باشد، به‌ترتیب به PID مربوط به JVM و برچسب زمانی فعلی بسط می‌یابد. اگر مسیری ارائه نشود، داده‌های ضبط دور ریخته می‌شوند. (FILE، بدون مقدار پیش‌فرض)
  • name: (اختیاری) نام ضبط (STRING، بدون مقدار پیش‌فرض)
نمایش داده‌های رویداد در نماهای از پیش تعریف‌شده.
تأثیر: متوسط نکته: options باید با نحو key یا key=value مشخص شوند. اگر هیچ پارامتری وارد نشود، فهرستی از نماهای موجود نمایش داده می‌شود. options:
  • cell-height: (اختیاری) حداکثر تعداد ردیف‌ها در یک سلول جدول. (INT، مقدار پیش‌فرض به نما بستگی دارد)
  • maxage: (اختیاری) بازه زمانی تحت پوشش نما. (INT به‌همراه 's' برای ثانیه، 'm' برای دقیقه یا 'h' برای ساعت، مقدار پیش‌فرض 10m است)
  • maxsize: (اختیاری) حداکثر اندازه تحت پوشش نما به بایت در صورتی که یکی از پسوندهای زیر استفاده نشده باشد: 'm' یا 'M' برای مگابایت یا 'g' یا 'G' برای گیگابایت. (STRING، مقدار پیش‌فرض 32MB است)
  • truncate: (اختیاری) حداکثر تعداد ردیف‌ها در یک سلول جدول. (INT، مقدار پیش‌فرض به نما بستگی دارد)
  • verbose: (اختیاری) پرس‌وجویی (query) که نما را تشکیل می‌دهد نمایش می‌دهد. (BOOLEAN، مقدار پیش‌فرض false است)
  • width: (اختیاری) عرض نما بر حسب نویسه (کاراکتر). (INT، مقدار پیش‌فرض به نما بستگی دارد) arguments:.IP • 2 view: نام نما (view) یا نوع رویداد برای نمایش. برای دیدن فهرستی از نماهای موجود از help JFR.view استفاده کنید. (STRING، بدون مقدار پیش‌فرض) پارامتر view می‌تواند نام یک نوع رویداد باشد. برای دیدن فهرست از JFR.view types استفاده کنید. برای نمایش همه نماها، از JFR.view all-views استفاده کنید. برای نمایش همه رویدادها، از JFR.view all-events استفاده کنید.
عامل بومی (native agent) مربوط به JVMTI را بارگذاری می‌کند.
تأثیر: کم arguments:
  • library path: مسیر مطلق عامل JVMTI برای بارگذاری. (STRING، بدون مقدار پیش‌فرض)
  • agent option: (اختیاری) رشته گزینه برای ارسال به عامل. (STRING، بدون مقدار پیش‌فرض)
ارسال سیگنال به JVM برای ایجاد درخواست تخلیه داده (data-dump) برای JVMTI.
تأثیر: زیاد
عامل مدیریت از راه دور را راه‌اندازی می‌کند.
تأثیر: کم --- بدون تأثیر نکته: گزینه‌های زیر باید با استفاده از نحو key یا key=value مشخص شوند. options:
  • config.file: (اختیاری) com.sun.management.config.file را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.host: (اختیاری) com.sun.management.jmxremote.host را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.port: (اختیاری) com.sun.management.jmxremote.port را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.rmi.port: (اختیاری) com.sun.management.jmxremote.rmi.port را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.ssl: (اختیاری) com.sun.management.jmxremote.ssl را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.registry.ssl: (اختیاری) com.sun.management.jmxremote.registry.ssl را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.authenticate: (اختیاری) com.sun.management.jmxremote.authenticate را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.password.file: (اختیاری) com.sun.management.jmxremote.password.file را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.access.file: (اختیاری) com.sun.management.jmxremote.acce ss.file را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.login.config: (اختیاری) com.sun.management.jmxremote.log in.config را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.ssl.enabled.cipher.suites: (اختیاری) com.sun.management را تنظیم می‌کند.
  • jmxremote.ssl.enabled.cipher.suite: (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.ssl.enabled.protocols: (اختیاری) com.sun.management.jmxr emote.ssl.enabled.protocols را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.ssl.need.client.auth: (اختیاری) com.sun.management.jmxre mote.need.client.auth را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.ssl.config.file: (اختیاری) com.sun.management.jmxremote. ssl_config_file را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jmxremote.autodiscovery: (اختیاری) com.sun.management.jmxremote.au todiscovery را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jdp.port: (اختیاری) com.sun.management.jdp.port را تنظیم می‌کند (INT، بدون مقدار پیش‌فرض)
  • jdp.address: (اختیاری) com.sun.management.jdp.address را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jdp.source_addr: (اختیاری) com.sun.management.jdp.source_addr را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
  • jdp.ttl: (اختیاری) com.sun.management.jdp.ttl را تنظیم می‌کند (INT، بدون مقدار پیش‌فرض)
  • jdp.pause: (اختیاری) com.sun.management.jdp.pause را تنظیم می‌کند (INT، بدون مقدار پیش‌فرض)
  • jdp.name: (اختیاری) com.sun.management.jdp.name را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
عامل مدیریت محلی را راه‌اندازی می‌کند.
تأثیر: کم --- بدون تأثیر
چاپ وضعیت عامل مدیریت.
تأثیر: کم --- بدون تأثیر
عامل مدیریت از راه دور را متوقف می‌کند.
تأثیر: کم --- بدون تأثیر
نقشه حافظه حاشیه‌نویسی‌شده فرایند را در یک فایل خروجی تخلیه می‌کند.
تأثیر: کم نکته: گزینه‌های زیر باید با استفاده از نحو key یا key=value مشخص شوند. options:
  • -H: (اختیاری) قالب خوانا برای انسان (BOOLEAN، false)
  • -F: (اختیاری) مسیر فایل. اگر %p در نام فایل مشخص شده باشد، به PID مربوط به JVM بسط داده می‌شود. (FILE، "vm_memory_map_%p.txt")
نقشه حافظه حاشیه‌نویسی‌شده فرایند VM را چاپ می‌کند.
تأثیر: کم نکته: گزینه‌های زیر باید با استفاده از نحو key یا key=value مشخص شوند. options:
•
-H: (اختیاری) قالب خوانا برای انسان (BOOLEAN، false)
تلاش می‌کند اطلاعات مربوط به میزان استفاده از هیپ بومی (native heap) را از طریق malloc_info(3) خروجی دهد. در صورت ناموفق بودن، عبارت "Error: " و دلیل آن را چاپ می‌کند.
تأثیر: کم
تلاش می‌کند با هرس کردن C-heap حافظه را آزاد سازد.
تأثیر: کم
تخلیه تمام رشته‌ها (threads) به همراه رد پشته (stack trace) در یک فایل با قالب متن خام یا JSON.
تأثیر: متوسط: بستگی به تعداد رشته‌ها دارد. نکته: گزینه‌های زیر باید با استفاده از نحو key یا key=value مشخص شوند. options:.IP • 2 -overwrite: (اختیاری) ممکن است روی فایل موجود بازنویسی کند (BOOLEAN، false)
  • -format: (اختیاری) قالب خروجی ("plain" یا "json") (STRING، plain) آرگومان‌ها:
  • filepath: مسیر فایل خروجی. اگر %p در نام فایل مشخص شود، به PID مربوط به JVM بسط می‌یابد. (FILE، بدون مقدار پیش‌فرض)
چاپ تمام رشته‌های پلتفرم و رشته‌های مجازی متصل‌شده، به همراه ردگیری‌های پشته. دستور Thread.dump_to_file تمام رشته‌ها را در یک فایل چاپ خواهد کرد.
میزان تأثیر: متوسط --- به تعداد رشته‌ها بستگی دارد. نکته: گزینه‌های زیر باید با استفاده از نحو key یا key=value مشخص شوند. گزینه‌ها:
  • -e: (اختیاری) چاپ اطلاعات گسترش‌یافتهٔ رشته (BOOLEAN، false)
  • -l: (اختیاری) قفل‌های java.util.concurrent را چاپ می‌کند (BOOLEAN، false)
چاپ زمان‌بند رشته‌های مجازی، و زمان‌بندهای وظایف تاخیردار که از رشته‌های مجازی انجام‌دهنده عملیات زمان‌دار پشتیبانی می‌کنند.
میزان تأثیر: کم
چاپ وارسی‌کننده‌های I/O که از رشته‌های مجازی در حال انجام عملیات مسدودکننده ورودی/خروجی شبکه پشتیبانی می‌کنند.
میزان تأثیر: کم
تخلیهٔ یک بایگانی اشتراکی ایستا یا پویا که شامل تمام کلاس‌های بارگذاری‌شدهٔ فعلی است.
میزان تأثیر: متوسط --- مدت زمان توقف به تعداد کلاس‌های بارگذاری‌شده بستگی دارد آرگومان‌ها:
  • subcmd: باید static_dump یا dynamic_dump باشد (STRING، بدون مقدار پیش‌فرض)
  • filename: (اختیاری) نام بایگانی اشتراکی که باید تخلیه شود. اگر %p در نام فایل مشخص شود، به PID مربوط به JVM بسط می‌یابد. (FILE، "java_pid%p_<subcmd>.jsa") اگر dynamic_dump مشخص شده باشد، JVM هدف باید با گزینهٔ JVM به نام -XX:+RecordDynamicDumpInfo راه‌اندازی شده باشد.
چاپ فهرستی از تمام کلاس‌های بارگذاری‌شده، با فاصله‌گذاری برای نمایش سلسله‌مراتب کلاس‌ها. پس از نام هر کلاس، ClassLoaderData* مربوط به ClassLoader آن می‌آید، یا اگر توسط بارگذار کلاس راه‌انداز (bootstrap class loader) بارگذاری شده باشد، "null" درج می‌شود.
میزان تأثیر: متوسط --- به تعداد کلاس‌های بارگذاری‌شده بستگی دارد. نکته: گزینه‌های زیر باید با استفاده از نحو key یا key=value مشخص شوند. گزینه‌ها:
  • -i: (اختیاری) رابط‌های به ارث برده شده باید چاپ شوند. (BOOLEAN، false)
  • -s: (اختیاری) اگر یک classname مشخص شده باشد، علاوه بر ابرکلاس‌های آن، زیرکلاس‌هایش نیز چاپ شوند. بدون این گزینه، تنها ابرکلاس‌ها چاپ خواهند شد. (BOOLEAN، false) آرگومان‌ها:
  • classname: (اختیاری) نام کلاسی که سلسله‌مراتب آن باید چاپ شود. در صورت عدم تعیین، سلسله‌مراتب تمام کلاس‌ها چاپ می‌شود. (STRING، بدون مقدار پیش‌فرض)
چاپ تمام کلاس‌های بارگذاری‌شده
میزان تأثیر: متوسط: به تعداد کلاس‌های بارگذاری‌شده بستگی دارد. گزینه‌های زیر باید با استفاده از نحو key یا key=value مشخص شوند. گزینه‌ها:
•
-verbose: (اختیاری) تخلیهٔ محتوای تفصیلی یک کلاس جاوا. برخی کلاس‌ها با پرچم‌ها علامت‌گذاری شده‌اند: F = دارای یک متد finalize غیرخالی است یا آن را به ارث می‌برد، f = دارای متد final است، W = متدها بازنویسی شده‌اند، C = با یادداشت @Contended نشانه‌گذاری شده است، R = بازتعریف شده است، S = کلاس اشتراکی است (BOOLEAN، false)
چاپ آمار مربوط به تمام ClassLoaderها.
میزان تأثیر: کم
سلسله‌مراتب classloader را چاپ می‌کند.
میزان تأثیر: متوسط --- به تعداد بارگذارهای کلاس و کلاس‌های بارگذاری‌شده بستگی دارد. گزینه‌های زیر باید با استفاده از نحو key یا key=value مشخص شوند. گزینه‌ها:
  • show-classes: (اختیاری) چاپ کلاس‌های بارگذاری‌شده. (BOOLEAN، false)
  • verbose: (اختیاری) چاپ اطلاعات تفصیلی. (BOOLEAN، false)
  • fold: (اختیاری) بارگذارهایی با نام و کلاس یکسان را به صورت یکی نمایش می‌دهد. (BOOLEAN، true)
چاپ خط فرمانی که برای راه‌اندازی این نمونهٔ VM استفاده شده است.
میزان تأثیر: کم
چاپ کتابخانه‌های پویای بارگذاری‌شده.
میزان تأثیر: کم
چاپ گزارش‌های رویداد VM
میزان تأثیر: کم --- به اندازهٔ گزارش‌های رویداد بستگی دارد. گزینه‌ها: نکته: گزینه‌های زیر باید با استفاده از نحو key یا key=value مشخص شوند.
  • log: (اختیاری) نام گزارشی که باید چاپ شود. در صورت عدم تعیین، تمام گزارش‌ها چاپ می‌شوند. (STRING، بدون مقدار پیش‌فرض)
  • max: (اختیاری) حداکثر تعداد رویدادهایی که باید چاپ شوند (جدیدترین‌ها در ابتدا). در صورت عدم تعیین یا صفر بودن، تمام رویدادها چاپ می‌شوند. (INT، 0)
چاپ گزینه‌های پرچم VM و مقادیر فعلی آن‌ها.
میزان تأثیر: کم نکته: گزینه‌های زیر باید با استفاده از نحو key یا key=value مشخص شوند. گزینه‌ها:
•
-all: (اختیاری) تمام پرچم‌های پشتیبانی‌شده توسط VM را چاپ می‌کند (BOOLEAN، false).
چاپ اطلاعات دربارهٔ محیط و وضعیت JVM.
میزان تأثیر: کم VM.log [گزینه‌ها] فهرست کردن پیکربندی کنونی لاگ، فعال/غیرفعال‌سازی/پیکربندی یک خروجی لاگ، یا چرخش تمام لاگ‌ها.
اثر: کم گزینه‌ها: نکته: گزینه‌های زیر باید با نحو key یا key=value مشخص شوند.
  • output: (اختیاری) نام یا شناسه عددی (#) خروجی برای پیکربندی. (STRING، بدون مقدار پیش‌فرض)
  • output_options: (اختیاری) گزینه‌های مربوط به خروجی. (STRING، بدون مقدار پیش‌فرض)
  • what: (اختیاری) پیکربندی این‌که چه برچسب‌هایی لاگ شوند. (STRING، بدون مقدار پیش‌فرض)
  • decorators: (اختیاری) پیکربندی این‌که از کدام تزیین‌کننده‌ها استفاده شود. برای حذف همه از 'none' یا یک مقدار خالی استفاده کنید. (STRING، بدون مقدار پیش‌فرض)
  • disable: (اختیاری) غیرفعال کردن تمام لاگ‌گیری‌ها و پاک‌سازی پیکربندی لاگ. (BOOLEAN، بدون مقدار پیش‌فرض)
  • list: (اختیاری) فهرست کردن پیکربندی کنونی لاگ. (BOOLEAN، بدون مقدار پیش‌فرض)
  • rotate: (اختیاری) چرخش تمام لاگ‌ها. (BOOLEAN، بدون مقدار پیش‌فرض)
چاپ آمار metaspace.
اثر: متوسط --- به تعداد کلاس‌های بارگذاری‌شده بستگی دارد. نکته: گزینه‌های زیر باید با نحو key یا key=value مشخص شوند. گزینه‌ها:
  • basic: (اختیاری) چاپ خلاصه‌ای پایه‌ای (نیازی به safepoint ندارد). (BOOLEAN، false)
  • show-loaders: (اختیاری) نمایش میزان استفاده بر پایه بارگذار کلاس (class loader). (BOOLEAN، false)
  • show-classes: (اختیاری) در صورت تعیین show-loaders، کلاس‌های بارگذاری‌شده برای هر بارگذار را نشان می‌دهد. (BOOLEAN، false)
  • by-chunktype: (اختیاری) تفکیک آمار بر پایه نوع chunk. (BOOLEAN، false)
  • by-spacetype: (اختیاری) تفکیک آمار بر پایه نوع بارگذار. (BOOLEAN، false)
  • vslist: (اختیاری) نمایش جزئیات درباره فضای مجازی (virtual space) زیرین. (BOOLEAN، false)
  • chunkfreelist: (اختیاری) نمایش جزئیات درباره فهرست‌های آزاد chunk سراسری (ChunkManager). (BOOLEAN، false)
  • scale: (اختیاری) مقیاسی که میزان مصرف حافظه بر پایه آن گزارش می‌شود. مقادیر معتبر عبارتند از: 1، KB، MB یا GB (مقیاس ثابت) یا "dynamic" برای مقیاسی که به‌طور پویا انتخاب می‌شود. (STRING، dynamic)
چاپ میزان مصرف حافظه محلی (native memory).
اثر: متوسط نکته: گزینه‌های زیر باید با نحو key یا key=value مشخص شوند. گزینه‌ها:
  • summary: (اختیاری) از زمان اجرا (runtime) درخواست می‌کند که خلاصه وضعیت حافظه کنونی را گزارش کند، که شامل کل حافظه رزروشده و تخصیص‌یافته (committed)، همراه با خلاصه مصرف حافظه توسط هر زیرسیستم است. (BOOLEAN، false)
  • detail: (اختیاری) از زمان اجرا درخواست می‌کند که تخصیص‌های حافظه >= 1K را به ازای هر نقطه فراخوانی (callsite) گزارش کند. (BOOLEAN، false)
  • baseline: (اختیاری) از زمان اجرا درخواست می‌کند که مصرف کنونی حافظه را به عنوان خط مبنا (baseline) ثبت کند، تا بعداً بتوان با آن مقایسه انجام داد. (BOOLEAN، false)
  • summary.diff: (اختیاری) از زمان اجرا درخواست می‌کند که مقایسه خلاصه حافظه نسبت به خط مبنای پیشین را گزارش کند. (BOOLEAN، false)
  • detail.diff: (اختیاری) از زمان اجرا درخواست می‌کند که مقایسه جزئیات حافظه نسبت به خط مبنای پیشین را گزارش کند، که فعالیت‌های تخصیص حافظه در نقاط فراخوانی مختلف را نشان می‌دهد. (BOOLEAN، false)
  • statistics: (اختیاری) چاپ آمارهای ردیاب (tracker) به منظور تنظیم و بهینه‌سازی. (BOOLEAN، false)
  • scale: (اختیاری) مقیاس نمایش مصرف حافظه، KB، MB یا GB (STRING، KB)
تنظیم گزینه فلگ ماشین مجازی با استفاده از مقدار ارائه‌شده.
اثر: کم آرگومان‌ها:
  • flag name: نام فلگی که می‌خواهید تنظیم کنید (STRING، بدون مقدار پیش‌فرض)
  • string value: (اختیاری) مقداری که می‌خواهید تنظیم کنید (STRING، بدون مقدار پیش‌فرض)
تخلیه جدول رشته‌ها (string table).
اثر: متوسط --- به محتوای جاوا بستگی دارد. نکته: گزینه‌های زیر باید با نحو key یا key=value مشخص شوند. گزینه‌ها:
•
-verbose: (اختیاری) تخلیه محتوای هر رشته در جدول (BOOLEAN، false)
تخلیه جدول نمادها (symbol table).
اثر: متوسط --- به محتوای جاوا بستگی دارد. نکته: گزینه‌های زیر باید با نحو key یا key=value مشخص شوند. گزینه‌ها:
•
-verbose: (اختیاری) تخلیه محتوای هر نماد در جدول (BOOLEAN، false)
چاپ مشخصه‌های سیستم (system properties).
اثر: کم
چاپ آمارهای مربوط به اندازه‌های جدول درهم‌سازی دیکشنری و طول باکت‌ها (bucket length).
اثر: متوسط نکته: گزینه‌های زیر باید با نحو key یا key=value مشخص شوند. گزینه‌ها:
•
verbose: (اختیاری) تخلیه محتوای هر مدخل دیکشنری برای تمام بارگذارهای کلاس (BOOLEAN، false).
چاپ مدت زمان فعال بودن ماشین مجازی (uptime).
اثر: کم نکته: گزینه‌های زیر باید با نحو key یا key=value مشخص شوند. گزینه‌ها:.IP • 2 -date: (اختیاری) پیشوندی با تاریخ کنونی اضافه می‌کند (BOOLEAN، false)
اطلاعات نگارش JVM را چاپ می‌کند.
تأثیر: کم
2026 JDK 26.0.2.1