كيفية تحسين استهلاك الذاكرة RAM لبرامج جافا

اقرأ في هذا المقال


الذاكرة في لغة البرمجة جافا:

تتميز لغة البرمجة جافا (Java) بأنها تتعامل مع آلة جافا الافتراضية (JVM) بدلاً من نظام التشغيل، وتكون آلة جافا الافتراضية هي المسؤولة عن التعامل مع نظام التشغيل و تنفيذ أوامر لغة جافا وتخزين قيم المتغيرات في الذاكرة (RAM) و إدارتها، ولغة جافا جاءت لتسهّل عملية البرمجة وحتى تساعد في تركيز تفكير المبرمج على الخوارزمية فقط فقد تم حذف إمكانية إزالة المتغيرات من الذاكرة (RAM) وتم استبدالها بجامع القمامة (Garbage Collector).

طرق لتحسين استهلاك البرامج المكتوبة بلغة البرمجة جافا للذاكرة RAM:

تحويل المتغيرات العامة لمتغيرات محليّة:

المتغيرات العامة هي عبارة عن المتغيرات التي يتم تعريفها داخل الكلاس (Class)، أما المتغيرات المحلية هي المتغيرات المعرفة داخل ال (Methods)، وتتميز المتغيرات العامة بأن قيمها تبقى في الذاكرة ما دام الكائن موجود، أما المتغيرات المحلية فيتم إسناد القيم إليها خلال تنفيذ الدالة، ويتم إزالة البيانات البدائية (Primitive Data) والمراجع (References) من الذاكرة فور إنتهاء تنفيذ الدالة وإزالة المراجع للكائنات بشكل لا يمكن البرنامج من إستخدامها في المستقبل سيسمح لجامع القمامة (Garbage Collector) بإزالة ذلك الكائن من الذاكرة (Heap).

 النصوص المكررة:

النص (string) هو عبارة عن مصفوفة من الأحرف (Characters) و التي تحجز مساحة (2Bytes) و تكرار استخدام النصوص المتشابهة يستهلك من الذاكرة مساحة لكل نص يتم استخدامه، لذلك ظهرت مشكلة النصوص المكررة (Duplicated Strings)، ولحل هذه المشكلة قام المطورون للغة البرمجة جافا بتطوير المترجم (Compiler) لكشف النصوص المتشابهة المكتوبة مباشرة في الكود ويتم بعد ذلك تعويضها بمرجع واحد.

استخدم أفضل خوارزمية:

من الممكن الوصول للحلول بخوارزميات عديدة، منها ما يتم تنفيذها بسرعة والبعض الآخر تحجز مساحة صغيرة للتخزين، لذلك على المستخدم إنتقاء أفضل خوارزمية لتحسين استهلاك الذاكرة (RAM).

 استخدم كلمة New بحذر:

تستخدم الكلمة المفتاحية (new) لإنشاء الكائنات أو المصفوفات وحجز أماكن لها في الذاكرة، وفي بعض الأحيان يحتاج المبرمج لإنشاء الكثير من الكائنات التي تتبع لنفس الكلاس داخل الدوال لإنجاز العديد من المهمات، وعندها ينصح المبرمج بإعادة إستخدام الكائن نفسه عدة مرات بدلاً من إنشاء كائن خاص لكل مهمة.

وعند الإنتهاء من الكائنات التي تحجز مساحة كبيرة في الذاكرة ينصح المبرمج بإزالة المراجع الخاصة لتلك الكائنات عبر إسناد (null) للمتغير الذي يحفظ المراجع، وهذا يسمح لجامع القمامة (Garbage Collector) في المستقبل عند إيقافه عمل البرنامج مؤقتاً لجمع القمامة بإزالة تلك الكائنات من الذاكرة.

المصدر: Java RAM Usage in Containers: Top 5 Tips Not to Lose Your MemoryWhy is Java using so Much Real Memory?Java Performance - Memory and Runtime Analysis - TutorialMinimize Java Memory Usage with the Right Garbage Collector


شارك المقالة: