"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > استخدام Java EpsilonGC للنظر في تخصيص الذاكرة.

استخدام Java EpsilonGC للنظر في تخصيص الذاكرة.

تم النشر بتاريخ 2024-11-08
تصفح:310

Using Java EpsilonGC to look at memory allocation.

تم الحصول على الكود المشار إليه في هذه المقالة من نموذج التعليمات البرمجية المتوفر على مدونة Oracle فيما يتعلق بـ Epsilon GC.

في هذه المقالة، نستكشف خيارًا مثيرًا للاهتمام بشكل خاص في Java Garbage Collection (GC) المعروف باسم Epsilon GC. تتميز خوارزمية جمع البيانات المهملة هذه بميزتها المميزة: فهي لا تقوم بجمع البيانات المهملة. تم تضمين مجمع البيانات المهملة Epsilon (GC) في JDK 11.

ولكن ما فائدة جامع القمامة إذا لم يكن يجمع؟ (مستغل هاه!!)

لا، إنها في الواقع مفيدة جدًا، وهي إحدى حالات الاستخدام التي توفرها مدونة Oracle، والتي قمت بتحسينها قليلاً لتكون أكثر فائدة.

لمزيد من التفاصيل، يرجى الرجوع إلى مشاركة المدونة الأصلية:
https://blogs.Oracle.com/javamagazine/post/epsilon-the-jdks-do-nothing-garbage-collector

حالة الاستخدام: يعد Epsilon GC مفيدًا للمطورين الذين يحتاجون إلى تقييم تخصيص الذاكرة لجزء معين من التعليمات البرمجية دون مساعدة أداة التنميط.

التحدي الأساسي يمكن لجامعي البيانات المهملة التقليديين إخفاء مقاييس استخدام الذاكرة الدقيقة عن طريق مسح الكائنات بشكل مستمر. هذا التداخل يجعل من الصعب التأكد من استهلاك الذاكرة الحقيقي للتعليمات البرمجية الخاصة بك.

يعالج Epsilon GC هذه المشكلة من خلال العمل كغير جامع. على الرغم من أنها ليست خوارزمية لجمع البيانات المهملة في حد ذاتها، إلا أنها تعمل كأداة لفهم تخصيص الذاكرة عن طريق الامتناع عن تنفيذ أي جمع للبيانات المهملة، وبالتالي توفير صورة واضحة لاستخدام الذاكرة.

ملاحظة: من المهم أن تدرك أنه نظرًا لأن Epsilon GC لا يستعيد الذاكرة، فإن التخصيص المفرط قد يؤدي إلى خطأ OutOfMemoryError (OOM) في JVM.

في ما يلي نموذج التعليمات البرمجية الذي سيتم استخدامه لإثبات فعالية Epsilon GC.:

public class EpsilonDemo {

    public static String formatSize(long v) {
        if (v 



التوقعات:
يخصص الكود 80 ميجابايت من كائنات نوع البايت. يجب أن نكون قادرين على ملاحظة ذلك مع عبارات الطباعة عندما نقوم بتنفيذ الكود.

الآن لتشغيل النسخة المجمعة مع/بدون EpsilonGC:

  1. التشغيل مع G1GC:
java -Xms100m -Xmx100m -XX: UseG1GC  EpsilonDemo
Starting allocations...
*** Free MEM = 102.2 MB
Completed successfully
*** Free MEM = 74.2 MB

لذلك مع G1GC نرى صورة تخصيص غير صحيحة لاستخدام 28 ميجابايت

  1. التشغيل مع EpsilonGC:
java -Xms100m -Xmx100m -XX: UnlockExperimentalVMOptions -XX: UseEpsilonGC EpsilonDemo
[0.004s][warning][gc,init] Consider enabling -XX: AlwaysPreTouch to avoid memory commit hiccups
Starting allocations...
*** Free MEM = 99.4 MB
Completed successfully
*** Free MEM = 18.7 MB 

هنا يمكنك أن ترى بوضوح استخدام 80.7 ميجابايت

آمل أن يساعدك هذا في معرفة كيف يمكن أن يكون EpsilonGC مفيدًا للغاية في اكتشاف أنماط استخدام الذاكرة في التعليمات البرمجية الخاصة بك. هتافات! ?

بيان الافراج هذه المقالة مستنسخة على: https://dev.to/vishalendu/using-java-episilongc-to-look-at-memory-allocation-50bi?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] للحذف هو - هي
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3