مقدمة
تقدم هذه المقالة بشكل أساسي أدوات التعامل مع الأخطاء في آلات Java الظاهرية. تتضمن هذه الأدوات المذكورة في المقالة:
| اسم | الوظائف الرئيسية |
| JPs | أداة حالة عملية JVM ، تعرض جميع عمليات الجهاز الظاهري للنقطة الساخنة في النظام المحدد. عادة مضيف محلي |
| JSTAT | أداة مراقبة إحصائيات JVM ، تستخدم لجمع بيانات التشغيل لجميع جوانب الجهاز الظاهري للنقطة الساخنة |
| جينفو | معلومات التكوين لجافا ، عرض معلومات تكوين الجهاز الظاهري |
| JMAP | خريطة الذاكرة لـ Java ، تقوم بإنشاء لقطة تخزين الذاكرة الخاصة بجهاز (ملف Heapdump) |
| جات | يتم استخدام متصفح تفريغ الكومة JVM لتحليل ملفات Heapdump. يقوم بإنشاء خادم HTTP/HTML ، مما يسمح للمستخدمين بعرض نتائج التحليل على المتصفح. |
| jstack | تتبع المكدس لجافا ، يعرض لقطات مؤشرات الخيط من الأجهزة الافتراضية |
JPS: أداة حالة عملية الجهاز الظاهري
تشبه وظيفة JPS أمر PS في UNIX/LIUNX. إنه يطبع عملية الجهاز الظاهري الجاري وتعرض اسم الفئة الرئيسية لتنفيذ الجهاز الظاهري ومعرف الجهاز الظاهري المحلي لهذه العمليات (معرف الجهاز الظاهري المحلي ، LVMID ، عادة معرف عملية النظام).
تنسيق أمر JPS:
JPS [خيارات] [HostId]
يمكن لـ JPS الاستعلام عن حالة عملية الجهاز الظاهري عن بُعد لخدمة RMI من خلال بروتوكول RMI ، والمضيف هو اسم المضيف المسجل في سجل RMI.
JPS الخيارات الشائعة الأخرى:
-Q فقط إخراج LVMID ، حذف اسم الفئة الرئيسية ؛
-M معلمات الإخراج تنتقل إلى الدالة الرئيسية () للفئة الرئيسية عند بدء عملية الجهاز الظاهري ؛
-L إخراج الاسم الكامل للفئة الرئيسية. إذا كانت العملية تنفذ حزمة جرة ، فقم بإخراج مسار الجرة ؛
-V إخراج معلمات JVM عند بدء عملية الجهاز الظاهري.
عينة أمر JPS:
[root@localhost ~]# jps -l3914 org.zhangyoubao.payservice.app12180 sun.tools.jps.jps6913 org.zhangyoubao.userprofiler.app
JSTAT: أداة مراقبة إحصائيات الجهاز الظاهري
JSTAT هي أداة تستخدم لمراقبة معلومات حالة التشغيل المختلفة للأجهزة الافتراضية. يمكنه عرض معلمات تشغيل مثل تحميل الفئة ، الذاكرة GC.JIT في عمليات الجهاز الظاهري المحلي أو البعيد.
تنسيق أمر JSTAT:
JSTAT [خيار VMID [الفاصل [S | MS] [COUNT]]]]]
الفاصل الزمني والعدد يمثلون فترات الاستعلام والأوقات. إذا تم حذف هاتين المعلمتين ، فهذا يعني أن الاستعلام مرة واحدة فقط.
الخيارات الأخرى شائعة الاستخدام لـ JSTAT:
-مراقبة الفئة عدد الحمل/التفريغ للفئة وإجمالي وقت تحميل المساحة ؛
-يقوم Compiler بإخراج الأساليب ، وتستغرق وقتًا طويلاً وغيرها من المعلومات التي جمعها برنامج التحويل البرمجي JIT ؛
-printcompilation الطريقة التي تخرج طريقة تجميع JIT ؛
-GC يراقب حالة كومة Java ؛
-جوكسور ، محتوى المراقبة هو في الأساس مثل -GC ، لكن الإخراج يركز على الحد الأقصى/الحد الأدنى من مساحة كل منطقة من Java ؛
-جوتيل محتوى المراقبة هو في الأساس مثل -GC ، لكن الإخراج يركز على استخدام المساحة يحتل 100 ٪ ؛
-gccause مثل وظيفة -gcutil ، يتسبب الإخراج الإضافي في آخر GC ؛
-gcnew يراقب حالة الجيل الجديد من GCS ؛
-GCNEWCAPACITY يراقب الجيل الجديد ويخرج بنفس القدر ؛
-gcold يراقب حالة GC في كبار السن ؛
-GCOLDCAPACITY يراقب كبار السن ويخرج بنفس القدر ؛
-gcpermcapactiy يراقب الجيل الدائم (منطقة الكود) ، يخرج نفس القدر ؛
عينة أمر JSTAT:
[root@localhost ~]# jStat -gc 6913 S0C S1C S0U S1U EC EU OC OU OU PC PU YGCT FGCT GCT GCT 34048.0 34048.0 0.0 3217.8 272640.0 171092.7 6833264.0 168910.7 46872.0 380.644 69 3.447 384.091
جينفو: أداة معلومات تكوين Java
تتمثل وظيفة JINFO في عرض وضبط المعلمات المختلفة للجهاز الظاهري في الوقت الفعلي.
تنسيق قيادة Jinfo:
Jinfo [الخيار] PID
خيارات أخرى شائعة الاستخدام لجينفو:
-flag name = تعديل القيمة المعلمات
-معلمة المعلمة الاسم
عينة من أمر jinfo:
[ROOT@localhost ~]# Jinfo 6913ATTACHING لمعالجة المعرف 6913 ، يرجى الانتظار ... تصحيح الأخطاء المرفقة بنجاح. -dserver.root =/usr/local/user_profiler -dcom.sun.management.jmxRemote.port = 7003 -dcom.sun.management.jmxRemote.ssl = false -dcom.sun.management.jmxRemote.authentateatic = false -verbose: -xx:+printgcdatestamps -xx:+useconcmarksweepgc
JMAP: أداة رسم خرائط الذاكرة Java
يمكن استخدام أمر JMAP لإنتاج لقطات تخزين الكومة (ملفات التفريغ). يمكنه أيضًا التحقق من تفاصيل قائمة الانتظار اللمسات الأخيرة (قائمة انتظار الذاتي) ، وكومة Java ومنطقة الرمز.
تنسيق أمر JMAP:
JMAP [خيار] VMID
خيارات أخرى شائعة الاستخدام لـ JMAP:
-Dump يولد لقطة من تخزين كومة Java. التنسيق: -dump: [live ،] format = b ، file = <filename> ؛
-يعرض FinalizerInfo كائنًا في F-Queue ينتظر ظاهرة Finalizer لتنفيذ طريقة اللمسات الأخيرة ؛
-يعرض Heap المعلومات التفصيلية لكومة Java ، مثل نوع Recycler المستخدم ، وتكوين المعلمة ، وانتظار حالة الأجيال ؛
-يعرض Histo إحصائيات الكائنات في الكومة ، بما في ذلك الفئات وكتب المثيلات والقدرة الكلية ؛
-PermStat استخدم ClassLoader كبابة إحصائية لعرض معلومات ذاكرة التوليد الدائمة ؛
-f عندما لا يستجيب خيار تفريغ Cheap Machere للآلة الافتراضية ، يمكنك استخدام هذا الخيار لفرض لقطة تفريغ.
عينة أمر JMAP:
[ROOT@localhost ~] #JMAP -HISTO 6913 | HEAD -20 NUM #INSANCES #BYTES NAME ------------------------------------------ 1: 1864966 113459432 [C 2: 201846 49201192 [B 3: 1597065 38329560 Java 15037056 org.zhangyoubao.thriftdef.userusefulinfo 5: 47104 11072048 [i 6: 268631 8596192 com.mysql.jdbc.connectionPropertiesImpl $ booleanconnectionproperty 9: 48812 6257856 <MethodKlass> 10: 4230 5271640 <StonstaterPoolklass> 11: 159491 5103712 java.util.Uhashtable $ 12: org.zhangyoubao.common.cache.adv.v.node 13: 127027 4064864 java.util.concurrent.concurrenthashmap $ hashentry 14: 230433 3686928 java.lang.integer 15: 3765 3049824 <StintatePoolsheklass> com.mysql.jdbc.field 17: 4230 2943840 <extalklassklass>
حيث [C=char[],[B=byte[],[S=short[],[I=int[],[[I=int[][] .
JHAT: أداة تحليل لقطات نقل الكومة الافتراضية
يتم استخدام أمر JHAT بالتزامن مع JMAP ويستخدم لتحليل ملفات التفريغ التي تم إنشاؤها بواسطة JMAP. يحتوي JHAT على خادم HTTP/HTML مصغر مدمج. بعد أن يمكن الاطلاع على نتائج تحليل ملف تفريغ تم إنشاؤها في المتصفح.
تنسيق أمر JHAT:
اسم الملف JMAP
عينة قيادة JHAT:
[root@localhost ~]# jhat html_intercept_server.dump القراءة من html_intercept_server.dump ... تفريغ ملف تم إنشاؤه يوم 23 نوفمبر 13:05:33 خادم HTTP على المنفذ 7000Server جاهز.
JSTACK: أداة تتبع ترسيمة خيط Java
يتم استخدام JSTACK لإنشاء لقطة مؤشر ترابط للوقت الحالي للجهاز الظاهري. لقطات الخيط هي خطة مكدس الطريقة التي يقوم بها كل مؤشر ترابط من الجهاز الظاهري الحالي. الغرض الرئيسي من إنشاء لقطات الخيوط هو تحديد أسباب توقف الخيط لفترة طويلة. عندما يتوقف الخيط ، استخدم JSTACK لمعرفة ما تفعله المواضيع غير المستجيبة في الخلفية أو الموارد التي تنتظرها.
تنسيق أمر JSTACK:
JSTACK [الخيار] VMID
خيارات أخرى:
-f عندما لا يتم الرد على طلب الإخراج عادة ، فرض مكدس مؤشر الترابط على الإخراج ؛
-عرض معلومات إضافية حول القفل بالإضافة إلى عرض المكدس ؛
-M إذا تم استدعاء طريقة محلية ، يمكن عرض كومة C/C ++.
عينة أمر JSTACK:
[ROOT@localhost ~]# JSTACK 29577 | HEAD -202016-11-23 12: 58: 23full Thread Dump OpenJDK Server VM (24.91-B01 MINCED MODE): java.lang.thread.state: timed_waiting (مواقف السيارات) في sun.misc.unsafe.park (الطريقة الأصلية) - مواقف السيارات للانتظار <0x75b5b400> (a java.util.concurrent.synchronousue $ transferstack) على java.util.concurrent.locks.locksupport.parknanos (locksupport.java:26) at java.util.concurrent.synchronousque $ transferstack.awaitful java.util.concurrent.synchronousqueue $ transferstack.transfer (synchronousqueue.java:359) at java.util.concurrent.synchronouseue.poll (synchronouseue.java:942) on java.util.concurrent.threadpoolexecutor.getTask (threadpoolexecutor.java:1068) في java.util.concurrent.threadpoolexecutor.run java.util.concurrent.threadpoolexecutor $ worker.run (threadpoolexecutor.java:615) في java.lang.thread.run (thread.java:745) java.lang.thread.state: timed_waiting (النوم) في java.lang.thread.sleep (الطريقة الأصلية) في org.zhangyoubao.video.client.runner.simplevideorunner.dowork (simplevideorunner.java:150)
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون محتوى هذه المقالة من بعض المساعدة لدراستك أو عملك. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل.