0Pricing
Java Academy · درس

التحليل باستخدام JDK Mission Control

قراءة تسجيلات JFR

التحليل باستخدام JDK Mission Control درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.

ما هو JMC؟

JDK Mission Control (JMC) هو الأداة الرسومية لتحليل تسجيلات JFR.

يفتح ملف .jfr ويحوّل الأحداث الخام إلى عروض قابلة للاستعراض: الأساليب الساخنة، وسلوك GC، وتنازع الأقفال، والتخصيص، وغير ذلك. كما يتضمن صفحة التحليل الآلي التي تشير إلى المشكلات المحتملة.

الحصول على JMC

JMC تنزيل مستقل، إذ فُصل عن JDK بعد JDK 8.

نزّلوه من إصدارات JMC التابعة لـ Adoptium أو Oracle، وشغّلوه، وافتحوا ملف .jfr باستخدام ملف > فتح ملف. لا حاجة إلى وكيل أو إلى إعادة تشغيل التطبيق — فأنتم تحللون التسجيل الملتقط مسبقًا.

صفحة التحليل الآلي

أول ما يعرضه JMC هو التحليل الآلي: مجموعة من الاستدلالات التي تقيّم التسجيل.

تسلّط الصفحة الضوء على أمور مثل فترات توقف GC الطويلة، وارتفاع التخصيص، والخيوط المحجوبة، وتغليف القيم البدائية داخل كائنات. ولكل نتيجة مستوى خطورة وشرح مختصر، ما يجعلها نقطة بداية ممتازة قبل التعمق يدويًا.

عرض تحليل الأساليب

تجمع صفحة تحليل الأساليب عينات التنفيذ في شجرة استدعاءات.

الأساليب التي تملك أعلى زمن ذاتي هي بؤر استهلاك CPU. ويمكنكم التبديل بين العرض من أعلى إلى أسفل (من المستدعي إلى المستدعى) والعرض من أسفل إلى أعلى (الأسلوب الساخن أولًا) لفهم ما هو بطيء ومن يستدعيه.

مخططات اللهب

يعرض JMC عينات المكدس في صورة مخطط لهب؛ إذ يتناسب العرض مع الزمن المستغرق.

المصاطب العريضة بالقرب من أعلى المخطط هي المواضع التي ينفق فيها CPU دوراته فعليًا. ويوضح هذا التصوير مسار الاستدعاء المسيطر بجلاء، وبسرعة أكبر بكثير من قراءة جدول مرتب.

عرض جمع البيانات المهملة

تعرض صفحات GC مدد فترات التوقف وتواترها، وتوضح أي جامع بيانات مهملة تم تشغيله.

ابحثوا عن فترات توقف طويلة أو متكررة تضر بزمن الاستجابة. ويرتبط معدل التخصيص المرتفع عادةً بعمليات GC متكررة للجيل الأصغر — والحل هو تقليل إنشاء الكائنات المتكرر، لا تغيير جامع البيانات المهملة.

بؤر التخصيص

يرتب عرض تخصيصات TLAB في JMC المواضع التي تُنشأ فيها الكائنات.

اربطوا ذلك بتتبع المكدس للعثور على السطر الدقيق الذي يجري التخصيص في حلقة ساخنة. وغالبًا ما يؤدي تغيير صغير — مثل إعادة استخدام مخزن مؤقت أو تجنب التغليف التلقائي — إلى خفض ضغط GC بدرجة كبيرة.

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // Autoboxing: each add boxes an int into an Integer object
        List<Integer> boxed = new ArrayList<>();
        for (int i = 0; i < 5; i++) boxed.add(i);
        System.out.println("Boxed " + boxed.size() + " Integers");
        System.out.println("JMC allocation view would flag this hotspot");
    }
}

تنازع الأقفال

يكشف عرضا مثيلات الأقفال وJava Monitor الخيوط التي تنتظر المزامنة.

إذا حجبت خيوط كثيرة نفسها على المراقب ذاته، فإن ذلك القفل يمثل عنق زجاجة في قابلية التوسع. يعرض JMC الكائن المتنازع عليه وتتبعات مكدسات الانتظار، حتى تتمكنوا من استهداف القسم الحرج الصحيح.

عروض الخيوط وزمن الاستجابة

تعرض صفحة الخيوط المخطط الزمني لكل خيط: قيد التنفيذ على CPU، أو متوقف مؤقتًا، أو ينتظر IO، أو محجوب.

بهذه الطريقة تتأكدون مما إذا كان التباطؤ مقيّدًا بالمعالج أو مقيّدًا بـ IO — وهو التمييز نفسه الوارد في درس أعناق الزجاجة. وتشير شرائط «الانتظار» العريضة إلى أن المشكلة مرتبطة بـ IO أو الأقفال، لا بالحساب.

من العثور على المشكلة إلى إصلاحها

سير العمل هو: افتحوا التسجيل، واقرؤوا التحليل الآلي، وتعمقوا في المنطقة التي أُشير إليها (تحليل الأساليب أو GC أو الأقفال)، وأكدوا النتيجة باستخدام مخطط اللهب وعرض الخيوط، ثم كوّنوا فرضية.

غيّروا شيئًا واحدًا، وأعيدوا التسجيل، وقارنوا النتائج بخط الأساس. يحوّل JMC ملفًا ثنائيًا إلى معلومات قابلة للتنفيذ.

مقارنة التسجيلات

لإثبات نجاح التحسين، قارنوا تسجيلًا «قبل» بتسجيل «بعد».

التقطوا تسجيل JFR لخط الأساس، وطبّقوا تغييرًا واحدًا، والتقطوا تسجيلًا آخر، ثم افتحوا كليهما في JMC. انظروا إلى العروض نفسها — تحليل الأساليب وGC والتخصيص — جنبًا إلى جنب. يظهر التحسن الحقيقي في صورة انخفاض الزمن الذاتي، أو قلة فترات توقف GC، أو انخفاض معدل التخصيص. وإذا لم يتغير شيء، فتراجعوا عن التغيير.

تحقق سريع

في عرضي تحليل الأساليب ومخطط اللهب في JMC، إلى ماذا يشير الزمن الذاتي لأسلوب ما (أو مصطبة عريضة في الأعلى)؟

خلاصة

يقرأ JMC تسجيلات JFR ويجعلها قابلة للتنفيذ:

  • يشير التحليل الآلي إلى المشكلات المحتملة منذ البداية.
  • يكشف تحليل الأساليب ومخططات اللهب بؤر استهلاك CPU عبر الزمن الذاتي.
  • تكشف عروض GC والتخصيص إنشاء الكائنات المتكرر.
  • تميز عروض الأقفال والخيوط بين المشكلات المقيّدة بالمعالج والمقيّدة بـ IO أو الأقفال.
  • تعمقوا في التفاصيل، وضعوا فرضية، وأصلحوا شيئًا واحدًا، وأعيدوا التسجيل، ثم قارنوا.

الأسئلة الشائعة

هل درس «التحليل باستخدام JDK Mission Control» مجاني؟

نعم — نص درس «التحليل باستخدام JDK Mission Control» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.

ماذا ستتعلم في «التحليل باستخدام JDK Mission Control»؟

قراءة تسجيلات JFR تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟

لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «التحليل باستخدام JDK Mission Control»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟

نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تحديد الاختناقات
  2. Java Flight Recorder
  3. التحليل باستخدام JDK Mission Control
  4. أعلام ضبط JVM الشائعة
← العودة إلى Java Academy