لماذا تنفد مساحة الكومة فقط عند إجراء اختبارات JUnit؟

StackOverflow https://stackoverflow.com/questions/681133

سؤال

عند تشغيل اختبارات JUnit، يبدو أنني أواجه هذا الخطأ دائمًا:

كسوف خارج الذاكرة:مساحة كومة

لقد قمت بمراقبة Eclipse باستخدام JConsole وذاكرة الكومة تصل إلى حوالي 150 ميجابايت.لقد قمت بتعيين ذاكرة الكومة إلى 1 جيجابايت.

أنا أستخدم الوسائط التالية عند بدء تشغيل Eclipse:

-vm "C:\Program Files\Java\jre1.5.0_08\bin\javaw.exe" -vmargs -Xmx1024M
-XX:MaxPermSize=128M -Dcom.sun.management.jmxremote.port=8999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

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

هل كانت مفيدة؟

المحلول

يتم تشغيل

وJUnit الاختبارات في VM مختلفة مثل IDE الكسوف. لذلك هو أن VM التي هي من الذاكرة وليس الكسوف واحد.
يمكنك تغيير إعدادات VM اختبار في تكوينات المدى للاختبار.
تذهب إلى تكوينات المدى ومن ثم تحت حجج، يمكنك تعيين الحجج VM.

نصائح أخرى

بالإضافة إلى استجابةThijs Wouters، لإصلاح هذه المشكلة في Eclipse، قمت بما يلي:

  • تمت إضافة تكوين تشغيل جديد ضمن JUnit (تشغيل> تشغيل التكوين> JUnit> جديد)
  • ضمن علامة تبويب الوسائط، قم بتعيين وسيطات VM على "-Xms64m -Xmx256m" أو أعلى إذا لزم الأمر

وربما لديك تسرب للذاكرة في JUnit الاختبارات الخاصة بك. A مسكتك شيوعا هو هذا: سوف أداة JUnit إنشاء مثيل جديد من فئة TestCase ل <م> كل طريقة الاختبار في ذلك وستبقى كل المتغيرات المثال حولها حتى ينهي أداة JUnit. وهذا يعني: إذا كان لديك فئة TestCase مع 50 طرق الاختبار ومتغير المثيل الذي تم تهيئة مع الرسم البياني الكائن 1MB في الإعداد من طريقة ()، ثم تلك الفئة TestCase سوف تتطلب مساحة 50MB كومة

تعديل: كما المشكلة الموضحة أعلاه فقط موجودة في الإصدارات القديمة من أداة JUnit، وأعتقد أنها ثابتة في أداة JUnit 4

.

ولقد صدر للتو المساعد لكسوف الشمس الذي سيتم تلقائيا تعيين حجم كومة على إطلاق أداة JUnit بالنسبة لك. يمكنك الحصول عليه من http://code.google.com/p/junitlaunchfixer/ وهي تعمل مع الكسوف أوروبا، جانيميد وجاليليو.

ولقد وجدت الحل لمشكلتي - قد يساعد الآخرين؛) عندما كنت في زيادة حجم كومة كنت زيادة حجم كومة من تطبيق الكسوف، وليس من برنامجي (التي نفذت من خلال الكسوف) ما كان علي القيام به وتعديل الأوامر التنفيذ قبل تشغيل برنامجي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top