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

jcmd - ارسال درخواست‌های عیب‌یابی به ماشین مجازی جاوای در حال اجرا در OpenJDK 21

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

jcmd [-l]

jcmd -h

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

نکته:

استفاده از jcmd بدون آرگومان مشابه استفاده از jcmd -l است.

-h
راهنمای خط فرمان ابزار jcmd را نمایش می‌دهد.

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

jcmd pid help command

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

اگر شناسه فرآیند (pid) یا کلاس اصلی (main-class) را به عنوان آرگومان اول مشخص کنید، ابزار jcmd درخواست دستور عیب‌یابی را به فرآیند جاوا با شناسه مشخص‌شده یا به تمام فرآیندهای جاوا با نام مشخص‌شده کلاس اصلی ارسال می‌کند. همچنین می‌توانید با مشخص کردن 0 به عنوان شناسه فرآیند، درخواست دستور عیب‌یابی را به تمام فرآیندهای جاوای موجود ارسال کنید.

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

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

help [options] [arguments]
برای اطلاعات بیشتر درباره یک دستور خاص.

arguments:

•
command name: نام دستوری که برای آن راهنما می‌خواهیم (STRING، بدون مقدار پیش‌فرض)

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

options:

•
-all: (اختیاری) نمایش راهنما برای تمام دستورات (BOOLEAN، پیش‌فرض false).
Compiler.codecache
طرح‌بندی و محدوده‌های کش کد (code cache) را چاپ می‌کند.

تاثیر: کم

Compiler.codelist
تمام متدهای کامپایل‌شده موجود در کش کد را که زنده هستند چاپ می‌کند.

تاثیر: متوسط

Compiler.perfmap (فقط لینوکس)
فایل نقشه را برای ابزار perf لینوکس می‌نویسد.

تاثیر: کم

Compiler.queue
متدهای در صف انتظار برای کامپایل را چاپ می‌کند.

تاثیر: کم

Compiler.directives_add *filename* *arguments*
دستورالعمل‌های کامپایلر را از یک فایل اضافه می‌کند.

تاثیر: کم

arguments:

filename: نام فایل دستورالعمل‌ها (STRING، بدون مقدار پیش‌فرض)

Compiler.directives_clear
تمام دستورالعمل‌های کامپایلر را حذف می‌کند.

تاثیر: کم

Compiler.directives_print
تمام دستورالعمل‌های فعال کامپایلر را چاپ می‌کند.

تاثیر: کم

Compiler.directives_remove
آخرین دستورالعمل اضافه‌شده به کامپایلر را حذف می‌کند.

تاثیر: کم

GC.class_histogram [options]
آماری درباره استفاده از هیپ جاوا ارائه می‌دهد.

تاثیر: بالا --- به اندازه و محتوای هیپ جاوا بستگی دارد.

نکته:

گزینه‌های options باید با استفاده از نحو key یا key=value مشخص شوند.

options:

•
-all: (اختیاری) بازرسی تمام اشیاء، از جمله اشیاء غیرقابل دسترس (BOOLEAN، پیش‌فرض false)
•
-parallel: (اختیاری) تعداد ریسه‌های موازی برای بازرسی هیپ. 0 (پیش‌فرض) به معنای واگذاری تعیین تعداد ریسه‌ها به VM است. 1 به معنای استفاده از یک ریسه (غیرفعال کردن موازی‌سازی) است. برای هر مقدار دیگر، VM سعی می‌کند از تعداد ریسه‌های مشخص‌شده استفاده کند، اما ممکن است از تعداد کمتری استفاده نماید. (INT، 0)
GC.finalizer_info
اطلاعاتی درباره صف Finalization جاوا ارائه می‌دهد.

تاثیر: متوسط

GC.heap_dump [options] [arguments]
یک دامپ با فرمت HPROF از هیپ جاوا ایجاد می‌کند.

تاثیر: بالا --- به اندازه و محتوای هیپ جاوا بستگی دارد. یک GC کامل درخواست می‌کند مگر اینکه گزینه -all مشخص شده باشد.

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

options:

•
-all: (اختیاری) دامپ تمام اشیاء، از جمله اشیاء غیرقابل دسترس (BOOLEAN، پیش‌فرض false)
•
-gz: (اختیاری) در صورت مشخص شدن، دامپ هیپ با فرمت فشرده gzipped با سطح فشرده‌سازی داده‌شده نوشته می‌شود. 1 (پیشنهادی) سریع‌ترین و 9 قوی‌ترین فشرده‌سازی است. (INT، 1)
•
-overwrite: (اختیاری) در صورت مشخص شدن، در صورت وجود فایل دامپ، روی آن بازنویسی خواهد شد (BOOLEAN، پیش‌فرض false)

arguments:

•
filename: نام فایل دامپ (STRING، بدون مقدار پیش‌فرض)
GC.heap_info
اطلاعات عمومی درباره هیپ جاوا ارائه می‌دهد.

تاثیر: متوسط

GC.run
متد java.lang.System.gc() را فراخوانی می‌کند.

تاثیر: متوسط --- به اندازه و محتوای هیپ جاوا بستگی دارد.

GC.run_finalization
متد java.lang.System.runFinalization() را فراخوانی می‌کند.

تاثیر: متوسط --- به محتوای جاوا بستگی دارد.

JFR.check [options]
اطلاعاتی درباره یک ضبط پرواز در حال اجرا نشان می‌دهد.

تاثیر: کم

نکته:

گزینه‌های options باید با استفاده از نحو key یا key=value مشخص شوند. اگر هیچ پارامتری وارد نشود، اطلاعات مربوط به تمام ضبط‌های فعال نشان داده می‌شود.

options:

•
name: (اختیاری) نام ضبط پرواز. (STRING، بدون مقدار پیش‌فرض)
•
verbose: (اختیاری) فلگ برای چاپ تنظیمات رویدادها برای ضبط (BOOLEAN، پیش‌فرض false)
JFR.configure [options]
پارامترها را برای یک ضبط پرواز تنظیم می‌کند.

تاثیر: کم

نکته:

گزینه‌های options باید با استفاده از نحو key یا key=value مشخص شوند. اگر هیچ پارامتری وارد نشود، تنظیمات جاری نمایش داده می‌شوند.

options:

•
globalbuffercount: (اختیاری) تعداد بافرهای سراسری. این گزینه یک گزینه قدیمی است: برای تغییر تعداد بافرهای سراسری، پارامتر memorysize را تغییر دهید. این مقدار پس از مقداردهی اولیه JFR قابل تغییر نیست. (STRING، مقدار پیش‌فرض بر اساس مقدار memorysize تعیین می‌شود)
•
globalbuffersize: (اختیاری) اندازه بافرهای سراسری، به بایت. این گزینه یک گزینه قدیمی است: برای تغییر اندازه بافرهای سراسری، پارامتر memorysize را تغییر دهید. این مقدار پس از مقداردهی اولیه JFR قابل تغییر نیست. (STRING، مقدار پیش‌فرض بر اساس مقدار memorysize تعیین می‌شود)
•
maxchunksize: (اختیاری) حداکثر اندازه هر تکه داده به بایت در صورتی که یکی از پسوندهای زیر استفاده نشود: '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)
JFR.dump [options]
نوشتن داده‌ها در یک فایل در حین اجرای ضبط پرواز

تاثیر: کم

نکته:

گزینه‌های options باید با استفاده از نحو key یا key=value مشخص شوند. هیچ گزینه‌ای الزامی نیست. ضبط پس از نوشته شدن داده‌ها به اجرای خود ادامه می‌دهد.

options:

•
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 ماشین مجازی جاوا و برچسب زمانی فعلی گسترش می‌یابد. (STRING، بدون مقدار پیش‌فرض)
•
maxage: (اختیاری) طول مدت زمان برای دامپ داده‌های ضبط پرواز در یک فایل. (INTEGER به همراه 's' برای ثانیه، 'm' برای دقیقه یا 'h' برای ساعت، بدون مقدار پیش‌فرض)
•
maxsize: (اختیاری) حداکثر اندازه برای مقدار داده جهت دامپ از یک ضبط پرواز به بایت در صورتی که یکی از پسوندهای زیر استفاده نشود: 'm' یا 'M' برای مگابایت یا 'g' یا 'G' برای گیگابایت. (STRING، بدون مقدار پیش‌فرض)
•
name: (اختیاری) نام ضبط. اگر نامی داده نشود، داده‌های تمام ضبط‌ها دامپ می‌شوند. (STRING، بدون مقدار پیش‌فرض)
•
path-to-gc-root: (اختیاری) فلگ برای ذخیره مسیر به ریشه‌های جمع‌آوری زباله (GC) در زمان دامپ داده‌های ضبط. اطلاعات مسیر برای یافتن نشت‌های حافظه مفید است اما جمع‌آوری آن می‌تواند باعث توقف موقت برنامه برای مدت کوتاهی شود. این فلگ را فقط زمانی روشن کنید که برنامه‌ای دارید که مشکوک به نشت حافظه است. (BOOLEAN، false)
JFR.start [options]
شروع یک ضبط پرواز

تاثیر: کم

نکته:

گزینه‌های options باید با استفاده از نحو key یا key=value مشخص شوند. اگر هیچ پارامتری وارد نشود، یک ضبط با مقادیر پیش‌فرض شروع می‌شود.

options:

•
delay: (اختیاری) مدت زمان انتظار قبل از شروع ضبط (INTEGER به همراه 's' برای ثانیه، 'm' برای دقیقه یا 'h' برای ساعت، 0s)
•
disk: (اختیاری) فلگ برای نوشتن داده‌ها روی دیسک در حین ضبط (BOOLEAN، true)
•
dumponexit: (اختیاری) فلگ برای نوشتن ضبط روی دیسک هنگام خاموش شدن ماشین مجازی جاوا (JVM). اگر روی 'true' تنظیم شود و مقداری برای filename داده نشود، ضبط در فایلی در دایرکتوری شروع فرآیند نوشته می‌شود. نام فایل یک نام تولیدشده توسط سیستم است که شامل شناسه فرآیند، شناسه ضبط و برچسب زمانی فعلی است. (برای مثال: id-1-2019_12_12_10_41.jfr) (BOOLEAN، false)
•
duration: (اختیاری) مدت زمان ضبط. توجه داشته باشید که 0s به معنای همیشگی است (INTEGER به همراه 's' برای ثانیه، 'm' برای دقیقه یا 'h' برای ساعت، 0s)
•
filename: (اختیاری) نام فایلی که داده‌های ضبط پرواز هنگام توقف ضبط در آن نوشته می‌شوند. اگر نام فایلی داده نشود، نام فایل بر اساس PID و تاریخ فعلی تولید شده و در دایرکتوری شروع فرآیند قرار می‌گیرد. نام فایل همچنین می‌تواند یک دایرکتوری باشد که در این صورت، نام فایل بر اساس PID و تاریخ فعلی در دایرکتوری مشخص‌شده تولید می‌شود. اگر %p و/یا %t در نام فایل مشخص شود، به ترتیب به PID ماشین مجازی جاوا و برچسب زمانی فعلی گسترش می‌یابد. (STRING، بدون مقدار پیش‌فرض)
•
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-root: (اختیاری) فلگ برای ذخیره مسیر به ریشه‌های جمع‌آوری زباله (GC) در پایان ضبط. اطلاعات مسیر برای یافتن نشت‌های حافظه مفید است اما جمع‌آوری آن زمان‌بر است. این فلگ را فقط زمانی روشن کنید که برنامه‌ای دارید که مشکوک به نشت حافظه است. اگر پارامتر settings روی 'profile' تنظیم شده باشد، اطلاعات جمع‌آوری‌شده شامل ردپای پشته محلی که شیء دارای نشت احتمالی در آن تخصیص یافته نیز خواهد بود. (BOOLEAN، false)
•
settings: (اختیاری) نام فایل تنظیماتی که مشخص می‌کند کدام رویدادها ضبط شوند. برای مشخص کردن بیش از یک فایل، نام‌ها را با کاما (',') جدا کنید. اگر فایل در JAVA-HOME/lib/jfr قرار ندارد، مسیر آن را لحاظ کنید. پروفایل‌های زیر همراه با JDK در دایرکتوری JAVA-HOME/lib/jfr قرار دارند: 'default.jfc': مجموعه پیش‌تعریف‌شده‌ای از اطلاعات را با بار اضافی کم جمع‌آوری می‌کند، بنابراین تاثیر حداقلی بر کارایی دارد و می‌تواند با ضبط‌هایی که به‌طور مداوم اجرا می‌شوند استفاده شود؛ '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. را با جدا کردن آن‌ها با فاصله مشخص کنید. در صورت وجود تعارض بین یک پارامتر و یک گزینه jfc.، پارامتر اولویت خواهد داشت. جداکننده فاصله را می‌توان برای مقادیر بازه زمانی حذف کرد، مانند 20ms. برای اطلاعات بیشتر در مورد نحو تنظیمات، به Javadoc بسته jdk.jfr مراجعه کنید.

JFR.stop [options]
توقف یک ضبط پرواز

تاثیر: کم

نکته:

گزینه‌های options باید با استفاده از نحو key یا key=value مشخص شوند. اگر هیچ پارامتری وارد نشود، هیچ ضبطی متوقف نمی‌شود.

options:

•
filename: (اختیاری) نام فایلی که هنگام توقف ضبط، داده‌ها در آن نوشته می‌شوند. اگر %p و/یا %t در نام فایل مشخص شود، به ترتیب به PID ماشین مجازی جاوا و برچسب زمانی فعلی گسترش می‌یابد. اگر مسیری ارائه نشود، داده‌های حاصل از ضبط دور ریخته می‌شوند. (STRING، بدون مقدار پیش‌فرض)
•
name: (اختیاری) نام ضبط (STRING، بدون مقدار پیش‌فرض)
JVMTI.agent_load [arguments]
عامل بومی (native agent) JVMTI را بارگذاری می‌کند.

تاثیر: کم

arguments:

•
library path: مسیر مطلق عامل JVMTI برای بارگذاری. (STRING، بدون مقدار پیش‌فرض)
•
agent option: (اختیاری) رشته گزینه‌ها برای ارسال به عامل. (STRING، بدون مقدار پیش‌فرض)
JVMTI.data_dump
به JVM سیگنال می‌دهد تا درخواست دامپ داده برای JVMTI انجام دهد.

تاثیر: بالا

ManagementAgent.start [options]
عامل مدیریت از راه دور را راه‌اندازی می‌کند.

تاثیر: کم --- بدون تاثیر

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو 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.access.file را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
•
jmxremote.login.config: (اختیاری) com.sun.management.jmxremote.login.config را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
•
jmxremote.ssl.enabled.cipher.suites: (اختیاری) com.sun.management.jmxremote.ssl.enabled.cipher.suites را تنظیم می‌کند.
•
jmxremote.ssl.enabled.cipher.suite: (STRING، بدون مقدار پیش‌فرض)
•
jmxremote.ssl.enabled.protocols: (اختیاری) com.sun.management.jmxremote.ssl.enabled.protocols را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
•
jmxremote.ssl.need.client.auth: (اختیاری) com.sun.management.jmxremote.ssl.need.client.auth را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
•
jmxremote.ssl.config.file: (اختیاری) com.sun.management.jmxremote.ssl_config_file را تنظیم می‌کند (STRING، بدون مقدار پیش‌فرض)
•
jmxremote.autodiscovery: (اختیاری) com.sun.management.jmxremote.autodiscovery را تنظیم می‌کند (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، بدون مقدار پیش‌فرض)
ManagementAgent.start_local
عامل مدیریت محلی را راه‌اندازی می‌کند.

تاثیر: کم --- بدون تاثیر

ManagementAgent.status
وضعیت عامل مدیریت را چاپ می‌کند.

تاثیر: کم --- بدون تاثیر

ManagementAgent.stop
عامل مدیریت از راه دور را متوقف می‌کند.

تاثیر: کم --- بدون تاثیر

System.native_heap_info (فقط لینوکس)
اطلاعاتی درباره استفاده از هیپ بومی از طریق malloc_info(3) چاپ می‌کند.

تاثیر: کم

System.trim_native_heap (فقط لینوکس)
تلاش می‌کند با هرس کردن هیپ C (C-heap)، حافظه را آزاد کند.

تاثیر: کم

Thread.print [options]
تمام ریسه‌ها را همراه با ردپای پشته چاپ می‌کند.

تاثیر: متوسط --- به تعداد ریسه‌ها بستگی دارد.

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

options:

•
-e: (اختیاری) چاپ اطلاعات گسترش‌یافته ریسه‌ها (BOOLEAN، پیش‌فرض false)
•
-l: (اختیاری) چاپ قفل‌های java.util.concurrent (BOOLEAN، پیش‌فرض false)
VM.cds [arguments]
یک آرشیو اشتراکی ایستا یا پویا شامل تمام کلاس‌های بارگذاری‌شده فعلی را دامپ می‌کند.

تاثیر: متوسط --- زمان توقف به تعداد کلاس‌های بارگذاری‌شده بستگی دارد

arguments:

•
subcmd: باید static_dump یا dynamic_dump باشد (STRING، بدون مقدار پیش‌فرض)
•
filename: (اختیاری) نام آرشیو اشتراکی برای دامپ (STRING، بدون مقدار پیش‌فرض)

اگر filename مشخص نشود، نام فایل پیش‌فرضی با استفاده از PID فرآیند هدف JVM انتخاب می‌شود. برای مثال java_pid1234_static.jsa، java_pid5678_dynamic.jsa و غیره.

اگر filename به عنوان یک مسیر مطلق مشخص نشود، فایل آرشیو در دایرکتوری‌ای نسبت به دایرکتوری جاری فرآیند هدف JVM ایجاد می‌شود.

اگر dynamic_dump مشخص شود، JVM هدف باید با گزینه JVM به صورت -XX:+RecordDynamicDumpInfo راه‌اندازی شده باشد.

VM.classloaders [options]
سلسله‌مراتب بارگذارهای کلاس را چاپ می‌کند.

تاثیر: متوسط --- به تعداد بارگذارهای کلاس و کلاس‌های بارگذاری‌شده بستگی دارد.

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

options:

•
show-classes: (اختیاری) چاپ کلاس‌های بارگذاری‌شده. (BOOLEAN، false)
•
verbose: (اختیاری) چاپ اطلاعات با جزئیات. (BOOLEAN، false)
•
fold: (اختیاری) نمایش بارگذارهای با نام و کلاس یکسان به صورت یک مورد واحد. (BOOLEAN، true)
VM.classloader_stats
آمار مربوط به تمام ClassLoaderها را چاپ می‌کند.

تاثیر: کم

VM.class_hierarchy [options] [arguments]
فهرستی از تمام کلاس‌های بارگذاری‌شده را که برای نشان دادن سلسله‌مراتب کلاس‌ها تورفتگی دارند چاپ می‌کند. نام هر کلاس با ClassLoaderData* مربوط به ClassLoader آن یا "null" در صورتی که توسط بارگذار کلاس راه‌انداز (bootstrap class loader) بارگذاری شده باشد، دنبال می‌شود.

تاثیر: متوسط --- به تعداد کلاس‌های بارگذاری‌شده بستگی دارد.

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

options:

•
-i: (اختیاری) رابط‌های به ارث برده شده باید چاپ شوند. (BOOLEAN، false)
•
-s: (اختیاری) اگر نام یک کلاس مشخص شده باشد، زیرکلاس‌های آن علاوه بر سوپرکلاس‌هایش چاپ می‌شوند. بدون این گزینه فقط سوپرکلاس‌ها چاپ خواهند شد. (BOOLEAN، false)

arguments:

•
classname: (اختیاری) نام کلاسی که سلسله‌مراتب آن باید چاپ شود. اگر مشخص نشود، تمام سلسله‌مراتب کلاس‌ها چاپ می‌شوند. (STRING، بدون مقدار پیش‌فرض)
VM.command_line
خط فرمانی را که برای راه‌اندازی این نمونه از VM استفاده شده است چاپ می‌کند.

تاثیر: کم

VM.dynlibs
کتابخانه‌های پویای بارگذاری‌شده را چاپ می‌کند.

تاثیر: کم

VM.events [options]
گزارش وقایع VM را چاپ می‌کند.

تاثیر: کم --- به اندازه گزارش وقایع بستگی دارد.

options:

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

•
log: (اختیاری) نام گزارشی که باید چاپ شود. در صورت حذف، تمام گزارش‌ها چاپ می‌شوند. (STRING، بدون مقدار پیش‌فرض)
•
max: (اختیاری) حداکثر تعداد وقایع برای چاپ (جدیدترین‌ها در ابتدا). در صورت حذف، تمام وقایع چاپ می‌شوند. (STRING، بدون مقدار پیش‌فرض)
VM.info
اطلاعاتی درباره محیط و وضعیت JVM چاپ می‌کند.

تاثیر: کم

VM.log [options]
پیکربندی جاری گزارش‌گیری را فهرست می‌کند، یک خروجی گزارش را فعال/غیرفعال/پیکربندی می‌کند، یا تمام گزارش‌ها را می‌چرخاند (rotate).

تاثیر: کم

options:

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

•
output: (اختیاری) نام یا اندیس (#) خروجی برای پیکربندی. (STRING، بدون مقدار پیش‌فرض)
•
output_options: (اختیاری) گزینه‌های مربوط به خروجی. (STRING، بدون مقدار پیش‌فرض)
•
what: (اختیاری) پیکربندی می‌کند که چه برچسب‌هایی ثبت شوند. (STRING، بدون مقدار پیش‌فرض)
•
decorators: (اختیاری) پیکربندی می‌کند که از کدام تزیین‌کننده‌ها (decorators) استفاده شود. از 'none' یا یک مقدار خالی برای حذف همه استفاده کنید. (STRING، بدون مقدار پیش‌فرض)
•
disable: (اختیاری) تمام گزارش‌گیری‌ها را خاموش کرده و پیکربندی گزارش را پاک می‌کند. (BOOLEAN، بدون مقدار پیش‌فرض)
•
list: (اختیاری) پیکربندی جاری گزارش‌گیری را فهرست می‌کند. (BOOLEAN، بدون مقدار پیش‌فرض)
•
rotate: (اختیاری) تمام گزارش‌ها را می‌چرخاند. (BOOLEAN، بدون مقدار پیش‌فرض)
VM.flags [options]
گزینه‌های فلگ VM و مقادیر فعلی آن‌ها را چاپ می‌کند.

تاثیر: کم

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

options:

•
-all: (اختیاری) تمام فلگ‌های پشتیبانی‌شده توسط VM را چاپ می‌کند (BOOLEAN، پیش‌فرض false).
VM.metaspace [options]
آمار مربوط به متاسپیس (metaspace) را چاپ می‌کند.

تاثیر: متوسط --- به تعداد کلاس‌های بارگذاری‌شده بستگی دارد.

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

options:

•
basic: (اختیاری) یک خلاصه پایه چاپ می‌کند (نیازی به safepoint ندارد). (BOOLEAN، false)
•
show-loaders: (اختیاری) میزان استفاده را بر اساس بارگذار کلاس نشان می‌دهد. (BOOLEAN، false)
•
show-classes: (اختیاری) در صورت تنظیم show-loaders، کلاس‌های بارگذاری‌شده را برای هر بارگذار نشان می‌دهد. (BOOLEAN، false)
•
by-chunktype: (اختیاری) تفکیک آمار بر اساس نوع تکه (chunk type). (BOOLEAN، false)
•
by-spacetype: (اختیاری) تفکیک آمار بر اساس نوع بارگذار. (BOOLEAN، false)
•
vslist: (اختیاری) جزئیات مربوط به فضای مجازی زیربنایی را نشان می‌دهد. (BOOLEAN، false)
•
scale: (اختیاری) مقیاس نمایش مصرف حافظه. مقادیر معتبر عبارتند از: 1، KB، MB یا GB (مقیاس ثابت) یا "dynamic" برای یک مقیاس با انتخاب پویا. (STRING، dynamic)
VM.native_memory [options]
میزان استفاده از حافظه بومی را چاپ می‌کند.

تاثیر: متوسط

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

options:

•
summary: (اختیاری) از زمان اجرا درخواست می‌کند تا خلاصه حافظه فعلی را گزارش کند، که شامل کل حافظه رزروشده و متعهدشده، به همراه خلاصه استفاده از حافظه توسط هر زیرسیستم است. (BOOLEAN، false)
•
detail: (اختیاری) از زمان اجرا درخواست می‌کند تا تخصیص‌های حافظه >= 1K را بر اساس هر محل فراخوانی (callsite) گزارش دهد. (BOOLEAN، false)
•
baseline: (اختیاری) از زمان اجرا درخواست می‌کند تا مصرف حافظه فعلی را به عنوان خط پایه قرار دهد تا بتوان بعداً با آن مقایسه کرد. (BOOLEAN، false)
•
summary.diff: (اختیاری) از زمان اجرا درخواست می‌کند تا مقایسه خلاصه حافظه را در برابر خط پایه قبلی گزارش دهد. (BOOLEAN، false)
•
detail.diff: (اختیاری) از زمان اجرا درخواست می‌کند تا مقایسه جزئیات حافظه را در برابر خط پایه قبلی گزارش دهد، که فعالیت‌های تخصیص حافظه در محل‌های مختلف فراخوانی را نشان می‌دهد. (BOOLEAN، false)
•
statistics: (اختیاری) آمار ردیاب را برای اهداف تنظیم و بهینه‌سازی چاپ می‌کند. (BOOLEAN، false)
•
scale: (اختیاری) مقیاس مصرف حافظه بر حسب KB، MB یا GB (STRING، KB)
VM.print_touched_methods
تمام متدهایی را که در طول عمر این JVM لمس شده‌اند چاپ می‌کند.

تاثیر: متوسط --- به محتوای جاوا بستگی دارد.

VM.set_flag [arguments]
گزینه فلگ VM را با استفاده از مقدار ارائه‌شده تنظیم می‌کند.

تاثیر: کم

arguments:

•
flag name: نام فلگی که می‌خواهید تنظیم کنید (STRING، بدون مقدار پیش‌فرض)
•
string value: (اختیاری) مقداری که می‌خواهید تنظیم کنید (STRING، بدون مقدار پیش‌فرض)
VM.stringtable [options]
جدول رشته‌ها را دامپ می‌کند.

تاثیر: متوسط --- به محتوای جاوا بستگی دارد.

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

options:

•
-verbose: (اختیاری) محتوای هر رشته در جدول را دامپ می‌کند (BOOLEAN، false)
VM.symboltable [options]
جدول نمادها را دامپ می‌کند.

تاثیر: متوسط --- به محتوای جاوا بستگی دارد.

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

options:

•
-verbose: (اختیاری) محتوای هر نماد در جدول را دامپ می‌کند (BOOLEAN، false)
VM.systemdictionary
آمار مربوط به اندازه‌های جدول درهم‌سازی دیکشنری سیستم و طول باکت‌ها را چاپ می‌کند.

تاثیر: متوسط

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

options:

•
verbose: (اختیاری) محتوای هر ورودی دیکشنری را برای تمام بارگذارهای کلاس دامپ می‌کند (BOOLEAN، false).
VM.system_properties
ویژگی‌های سیستم را چاپ می‌کند.

تاثیر: کم

VM.uptime [options]
مدت زمان فعال بودن VM را چاپ می‌کند.

تاثیر: کم

نکته:

گزینه‌های (options) زیر باید با استفاده از نحو key یا key=value مشخص شوند.

options:

•
-date: (اختیاری) یک پیشوند با تاریخ جاری اضافه می‌کند (BOOLEAN، false)
VM.version
اطلاعات نسخه JVM را چاپ می‌کند.

تاثیر: کم

2023 JDK 21