يدرس هذه المقالة بشكل أساسي فهم سجلات GC في أجهزة Java الظاهرية ، على النحو التالي.
يعد فهم سجلات GC مهارة أساسية في التعامل مع مشاكل ذاكرة الجهاز الافتراضي Java.
عن طريق إضافة معلمات إلى نوع أمر JAVA ، حدد نوع GC المقابل ، وطباعة معلومات سجل GC وإخراجها إلى الملفات والسياسات الأخرى.
الفئة العامة referenceCountingGC {مثيل كائن عام = null ؛ خاص ثابت int One_MB = 1024 * 1024 ؛ بايت خاص [] BigSize = New Byte [2 * One_MB] ReferenceCountingGC () ؛ ReferenceCountingGC OBJB = New ReferenCountingGC () ؛ obja.instance = objb ؛ objb.instance = obja ؛ obja = null ؛ objb = null ؛ system.gc () ؛}}Javac ReferenceCountinggc.java
java -xx:+printgcdateStamps -xx:+printgcdetails referenceCountingGC
قائمة المعلمات المقابلة
-xx:+printgc output gc log
-xx:+printgcdetails يخرج سجلات مفصلة لـ GC
-xx:+printgctimestamps مخرجات الطوابع الزمنية GC (في شكل مرجعي)
-xx:+printgcdateStamps إخراج الطابع الزمني لـ GC (في شكل تاريخ ، مثل 2013-05-04T21: 53: 59.234+0800)
-xx:+printheapatgc اطبع معلومات الكومة قبل وبعد GC
-xloggc: ../ logs/gc.log مسار الإخراج من ملف السجل
نتائج الإخراج:
2016-03-20T14: 34: 55.118-0800: [GC [Psyounggen: 6123k-> 400k (38912k)] 6123k-> 400k (125952k) ، 0.0012070 secs]
2016-03-20T14: 34: 55.119-0800: [GC full [psyounggen: 400k-> 0k (38912k)] [paroldgen: 0k-> 282k (87040k)] 400k-> 282k (125952k) 0.0084640 ثانية] [مرات: المستخدم = 0.01 SYS = 0.00 ، حقيقي = 0.01 ثانية]
كومة
Psyounggen Total 38912K ، المستخدمة 1013k [0x00000007d55000000 ، 0x00000007d80000000 ، 0x000000000000000)
Eden Space 33792K ، 3 ٪ المستخدمة [0x00000007d5500000 ، 0x00000007d55fd7d0 ، 0x00000007d76000000)
من الفضاء 5120K ، 0 ٪ المستخدمة [0x00000007D7600000 ، 0x00000007D7600000 ، 0x00000007D7B000000)
إلى الفضاء 5120K ، 0 ٪ المستخدمة [0x00000007D7B00000 ، 0x00000007D7B00000 ، 0x00000007D80000000)
Paroldgen Total 87040K ، المستخدمة 282 كيلو [0x0000000780000000 ، 0x00000007855000000 ، 0x00000007d55000000)
مساحة الكائن 87040K ، 0 ٪ المستخدمة [0x0000000780000000 ، 0x0000000780046BF8 ، 0x0000000785000000)
PSPermgen Total 21504k ، 2628k [0x0000000077ae000000 ، 0x000000077c3000000 ، 0x000000078000000)
كائن مساحة 21504K ، 12 ٪ المستخدمة [0x000000077AE00000000000000000077B091380،0X00000077C3000000)
Psyounggen يعني الجيل الجديد ، ويتم تحديد هذا الاسم من قبل جامع ، وهو Scavenge الموازي. paroldgen ، pspermgen بشكل دائم
يمكنك أن ترى أن هناك نوعين من GC: GC و GC الكامل. هناك بيان كامل أن إيقاف العالم حدث لـ GC هذه المرة.
Clan GC (Minor GC): يشير إلى إجراء جمع القمامة الذي يحدث في العشيرة. نظرًا لأن معظم كائنات Java لها خصائص الحياة والموت ، فإن GC البسيطة متكررة للغاية وعمومًا تكون سرعة إعادة التدوير سريعة جدًا.
GC الأقدم (GC/GC الكامل): يشير إلى GC الذي يحدث في الشيخوخة. يظهر GC الرئيسي ، والذي يرافقه غالبًا GC على الأقل مرة واحدة. تكون سرعة GC الرئيسية أبطأ بشكل عام أكثر من 10 أضعاف من GC البسيطة.
[GC [Psyounggen: 6123k-> 400k (38912k)] 6123k-> 400k (125952k) ، 0.0012070 secs]
تشير 6123K-> 400K (38912K) داخل الشريحة المربعة أعلاه إلى أن منطقة الذاكرة قد استخدمت السعة قبل GC -> GC بعد GC ، و 38912K داخل الشريحة المستديرة خلف السعة الإجمالية لمنطقة الذاكرة.
إن 6123K-> 400K (125952K) خارج الأقواس المربعة تعني أن كومة Java قد استخدمت القدرة قبل GC -> وقد استخدمت كومة Java السعة بعد GC ، و 125952k داخل الأقواس المستديرة خلفها هي القدرة الإجمالية على كومة Java.
[Times: user = 0.00 sys = 0.00 ، real = 0.00 secs] على التوالي يمثل وقت وحدة المعالجة المركزية التي يستهلكها المستخدم ، و CPU وقت المستهلك بواسطة حالة kernel ، ووقت ساعة الحائط قد انقضى من البداية إلى نهاية العملية. الفرق بين وقت وحدة المعالجة المركزية ووقت ساعة الحائط هو أن وقت ساعة الحائط يتضمن مختلف وقت انتظار عدم التشغيل ، مثل انتظار القرص I/O وانتظار حظر الخيوط ، في حين أن وقت وحدة المعالجة المركزية لا يتضمن هذه الوقت.
يمكنك استخدام بعض الأدوات غير المتصلة بتحليل سجلات GC ، مثل Sun's Gchisto (https://java.net/projects/gchisto) و GcViewer (https://github.com/chewiebug/gcviewer). هذه كلها أدوات مفتوحة المصدر. يمكن للمستخدمين تنزيل رمز المصدر الخاص بهم مباشرة من خلال أدوات التحكم في الإصدار للتحليل غير المتصل بالإنترنت.
ما سبق هو كل شيء عن تحليل سجل GC لجهاز Java Virtual Machine ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!