جافا الذاكرة: كومة الفضاء وجامع القمامة

تعرف على كيفية إدارة جافا الذاكرة عبر الفضاء كومة وجمع القمامة. يمكن فهم تخصيص الذاكرة يساعد على تجنب تسرب الذاكرة في برامج جافا.

A+ A-

مؤخرا، كتبت تطبيق جافا والتي عند تشغيله، يتطلب قدرا كبيرا من الذاكرة وبدأت للحصول على الخطأ OutOfMemory:

 خطأ: java.lang.OutOfMemoryError: جافا كومة الفضاء 

هذا يحدث في كثير من الأحيان عندما نحتاج لتشغيل البرامج التي تستهلك الكثير من الذاكرة. فيما يلي عدد قليل من الطرق لحل هذه المشاكل.

ما هو جافا كومة الفضاء؟

أولا وقبل كل شيء، يتيح فهم ما هو مساحة الكومة. حسنا، يستخدم جافا الذاكرة بشكل رئيسي في ترتيبات كومة كومة و . جافا تحافظ على المعلمات التي تم تمريرها من طريقة الدعوة إلى طريقة تسمى ، في شكل هيكل كومة (يتم دفع أي المعلمات في وبرزت من كومة حسب الحاجة). من ناحية أخرى، الرجمة هي مساحة ذاكرة الوصول بشكل عشوائي حيث يخلق جافا وتحافظ على الكائنات. جافا بإنشاء الكائن ضمن هذه المساحة كومة أينما يجد مساحة كافية لاحتواء الكائن. لذلك، عند إنشاء كائن جديد (على سبيل المثال الجديدة سلسلة () ؛) يحصل على إنشاء الكائن في مساحة كومة وتحتل الذاكرة التي يمكن أن تندرج في. خلال جمع القمامة، جافا يحرر مساحة كومة من تلك الكائنات التي لم تعد المشار إليه. ولكن إذا كان عدد من المشار إليها (أي "مطلوب") الأشياء العدد في ازدياد مستمر، ونحن لا إذعان لهم -The JVM نفدت مساحة الكومة.

مقدار الذاكرة أن فئة تتطلب يعتمد على عدد ونوع من أعضاء البيانات الخاصة به.

  1. الفئة نفسها تتطلب الحد الأدنى من 8 بايت
  2. يتطلب كل عضو بيانات 4 بايت (تتطلب فترة طويلة وضعف 8 بايت). حتى متغير منطقية هو استخدام 4 بايت على الرغم من أنه يحتاج فقط بت واحد للحصول على تخزينها.
  3. مقدار الذاكرة المستخدمة ينمو في قطع من 8 بايت
تحسين برامج جافا

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

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

جعل استخدام جافا طريقة جمع القمامة

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

 Runtime.getRuntime () القيادة العامة ()؛ 

يمكنك مراقبة حالة الذاكرة قبل وبعد ما يسمى القيادة العامة طريقة ().

 System.out.println ( "nnCalling القمامة Collectornn")؛
System.out.println ( "الذاكرة الحرة قبل:" + Runtime.getRuntime () freeMemory ())؛
Runtime.getRuntime () القيادة العامة ()؛
System.out.println ( "ذاكرة حرة بعد:" + Runtime.getRuntime () freeMemory ())؛
System.out.println ( "nnGarbage جمع finishednn")؛ 

يعود freememory طريقة () مقدار الذاكرة المجانية المتاحة تقاس بايت. للحصول على طرق الأخرى المقدمة من قبل فئة وقت التشغيل نرى جافا API

إعطاء المزيد من الذاكرة لJVM

جهود لتحسين الرغم من استخدام الذاكرة، وأحيانا JVM لا يحتاج في الواقع أكبر من الذاكرة. في مثل هذه الحالات يمكن أن نقول JVM عن طريق سطر الأوامر إلى استخدام كمية محددة من الذاكرة:

 جافا -Xms2000m -Xmx3500m 

-Xms و-Xmx مفاتيح تحديد مقدار مساحة المبادلة (الذاكرة الظاهرية) التي JVM يمكن استخدامها في جهازك.

-Xms يحدد الحد الأدنى (أي الأولي) مقدار الذاكرة

يحدد -Xmx أكبر قدر ممكن من الذاكرة التي يمكن أن تستخدم JVM.

ينبغي تحديد هذه القيم الذاكرة في ميغابايت.

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

Ads

شارك

الأخيرة

أفضل البدائل أوبونتو للبحث عن إذا كنت لينكس العشاق

دعونا نبدأ عن طريق الحصول على دراية شيء. الأساسية ولكن قليل...

كيفية إضافة التوقيع في علبة بريد جوجل - إضافة التوقيع جوجل في Gmail

وكان صندوق البريد الوارد من قبل جوجل واحدة من أفضل الأمور ق...

أسبوعية أخبار تكنولوجيا المعلومات: نوكيا وغوغل ونينتندو

مرحبا بالجميع، انها الجمعة 3 مارس وتماما مثل دائما نعود مع ...

مشاريع بي التوت للمبتدئين - ماذا يمكن أن تفعل مع التوت بي

التوت بي هو عبارة عن سلسلة من الطاقة المنخفضة، وأجهزة الكمب...

أفضل VPN لالروبوت 2017 - كيفية استخدام VPN في الروبوت

لقد ولت الأيام التي كانت فيها الشبكات الخاصة الإفتراضية فقط...

تعليقات